Gente, expongo el ejercicio y hago un par de comentarios para quien se ha vuelto un poco loco como yo a la hora de realizarlo.
Primero, gracias a todos los que han intentado realizar el ejercicio y lo han subido al foro, gracias a ellos pude constatar errores y solucionar otros.
Luego, muchas gracias a lo moderadores que han respondido las inquietudes, a traves de todos los comentarios y respuestas pude entender mejor los conceptos. Todavía me cuesta mucho este tema, pero creo que fue un gran avance
En este ejercicio lo que me resulto de mucha ayuda fue ir haciendo los comentario mientras iba planteando y escribiendo el codigo. Nota (leer sobre Pseudocodigo es fundamental en estos casos) Mas que nada cuando entraba en un ciclo y tenia que volver a preguntarme que hacer dentro de un nuevo ciclo anidado (en fin, el que hace este ejercicio entendera a lo que me refiero)
Consigna:
La interface Set de Java es implementada por las clases HashSet y TreeSet. Busca información sobre estas clases en la documentación del api Java. Crea un programa Java que haga lo siguiente:
a) Declarar un ArrayList de objetos de tipo Set.
b) Crear un objeto de tipo HashSet para contener Strings y haz que contenga las cadenas “sol”, “luna”, “saturno”.
c) Crear un objeto TreeSet para contener Integers y haz que contenga los números 2, 8, 5.
d) Añade los objetos HashSet y TreeSet como elementos del ArrayList.
e) Usa iteradores para recorrer los elementos del ArrayList y recorrer el contenido de cada uno de los elementos y mostrar este contenido por pantalla. Por pantalla deberás obtener “sol”, “luna”, “saturno”, 8, 5, 2.
Clase Test_Polimorfismo
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
public class Test_Polimorfismo
{
public static void main(String[] args)
{
// Declaro las 3 colecciones
ArrayList<Set> miLista = new ArrayList<Set>();
HashSet<String> miHashSet = new HashSet<String>();
TreeSet<Integer> miTreeSet = new TreeSet<Integer>();
// Asigno los elementos a cada lista
miHashSet.add("sol"); miHashSet.add("luna"); miHashSet.add("saturno");
miTreeSet.add(2); miTreeSet.add(8); miTreeSet.add(5);
// Asigno las 2 listas a mi listado
miLista.add(miHashSet); miLista.add(miTreeSet);
//Creo un iterador para recorrer "miLista"
Iterator<Set> it1 = miLista.iterator();
// mientras el iterador que contiene la copia de "miLista" tenga elementos
while(it1.hasNext())
{
Set tmp = it1.next(); // En tmp guardo ese elemento (que es tambien una lista)
Iterator<Set> it2 = tmp.iterator();// entonces creo un nuevo iterador para pasarle una copia de tmp (que habiamos dicho es una lista tambien)
while(it2.hasNext()) // Entonces, mientras it2 (iterador de mi sublista), tenga elementos
{
System.out.print( it2.next() + ","); // mostrara cada uno de ellos
}
}
}
}
Como muchos, he tenido problemas cuando trataba de hacer una clasificacion tanto con los Strings como con los Integers, al final vi un comentario de "Cesar Krall" para "betico"
que me ayudo a entender y hacer mas simple el codigo, les paso el link:
https://www.aprenderaprogramar.com/foros/index.php?topic=912.msg5263#msg5263Gracias a los dos.
Este ejercicio (creo) retorna la consigna de manera correcta, espero les sirva!
Saludos.