Autor Tema: Java Concepto de polimorfismo cómo iterar sobre objetos distintos tipos CU00678B  (Leído 3796 veces)

PatAs

  • Sin experiencia
  • *
  • Mensajes: 19
  • ¿Libre...? - Solo cuando pienso y aprendo!!
    • Ver Perfil
Buen día. Presento código correspondiente a posible solución del ejercicio propuesto CU00678B del curso de fundamentos de programación Java con BlueJ.

Código: [Seleccionar]
import java.util.*;
/**
 * Corresponde al ejercicio CU00678B - Curso "Aprender Programación java desde cero"
 * de aprenderaprogramar.com
 * 
 * Julio/2017
 */
 /* Enunciado:
(a).-Declarar un ArrayList de objetos tipo 'Set'
(b).-Crear un objeto de tipo 'HashSet' para contener Strings y que contenga
las cadenas: "sol", "luna", "saturno".
(c).-Crear un objeto de tipo 'TreeSet' para contener Integer y que contenga
los números: 2, 8, 5.
(d).-Usando iteradores para recorrer los elementos del ArrayList y el contenido
de cada uno de los elementos, mostrar por pantalla.*/
 /*Nota: Se ha añadido con fines didácticos mostrar también los componentes de los
 objetos HashSet y TreeSet.*/
 
public class TestPolimorfismo {
public static void main (String[] Args) {
ArrayList<Set> lista1 = new ArrayList<Set>(); //item 'a'
Set<String> s = new HashSet<String>(); //item 'b'
s.add("sol");
s.add("luna");
s.add("saturno");
//Muestro los componentes del HashSet
System.out.print("Item (b)- Los componentes de 's': ");
Iterator it1 = s.iterator();
while (it1.hasNext()) {
System.out.print(it1.next()+ "; ");
}
Set<Integer> t = new TreeSet<Integer>(); //item 'c'
t.add(2);
t.add(8);
t.add(5);
//Muestro los componentes del TreeSet
System.out.println("");
System.out.print("Item (c)- Los componentes de 't': ");
Iterator it2 = t.iterator();
while (it2.hasNext()) {
System.out.print(it2.next()+ ("; "));
}
//item 'd' - Se añaden los objetos HashSet y TreeSet al ArrayList
lista1.add(s);
lista1.add(t);

System.out.println("");

System.out.print("Item (d)- Los componentes del ArrayList: ");
//item 'e' recorrido del ArrayList mediante iteradores para mostrar los componentes
Iterator it3 = lista1.iterator();
while (it3.hasNext()) {
Iterator it4 = ((Set)it3.next()).iterator();
while (it4.hasNext()) {
System.out.print(it4.next()+ "; ");
}

}
}
}
« Última modificación: 03 de Septiembre 2017, 11:23 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Java desde cero - Ejercicio CU00678 - Concepto de polimorfismo
« Respuesta #1 en: 16 de Agosto 2017, 18:55 »
Hola PatAs, ejercicio de cierta complejidad, bien resuelto. Por favor pon siempre los números de ejercicios completos, por ejemplo CU00678B en lugar de CU00678

El fragmento

Código: [Seleccionar]
        while (it3.hasNext()) {
            Iterator it4 = ((Set)it3.next()).iterator();
            while (it4.hasNext()) {
                System.out.print(it4.next()+ "; ");
            }
        }

Puede ser algo complicado de entender para quien no esté habituado a trabajar con Java, pero lo veo buen código

Saludos

carlacinquemani

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Hola, cómo están? Tengo una duda sobre la porción de código citada en la respuesta, la de los while anidados con los iterator.
Por qué hay que anidarlos así para que se muestre el array completo? Yo lo hice sin while anidados y se muestran el hashset y el treeset por separado.
Gracias!

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola carlacinquemani, el anidamiento se usa aquí para por un lado recorrer una colección de objetos Set que están en lista1 mediante el iterador Iterator it3 = lista1.iterator(); con el while más externo

Y por otro lado para cada Set, que contiene una colección de cadenas de texto (String), se usa el otro while para recorrer esas cadenas.

Este ejercicio se puede resolver de distintas maneras, por lo tanto no necesariamente otro código distinto está mal. En caso de querer mostrar tu código, abre un nuevo tema.

Saludos.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".