Buenas tardes, dejo la solución de mi ejercicio aunque no estoy nada satisfecho.
No se si es la vuelta de Semana Santa pero he encontrado especialmente complicado el ejercicio ( lo cual no es malo ) la razón de que no me convenza es que saco por pantalla los contenidos de los objetos en conjunto y no la información concreta que alberga cada uno. El resultado es el mismo pero en conjunto [ 2, 8,5 ] [ sol, luna,saturno ].
Clase Estrellas
import java.util.HashSet;
public class Estrellas{
private HashSet <String> stars = new HashSet <String>();
public Estrellas(){ //constructor inicializado por defecto
stars.add("sol");
stars.add("luna");
stars.add("saturno");
}//cierre contructor
public HashSet <String> getEstrellas() { return stars; }
} //cierre clase
Clase Numeros
import java.util.TreeSet;
public class Numeros {
private TreeSet <Integer> numbers = new TreeSet <Integer>();
public Numeros(){ //contructor crea por defecto los objetos
numbers.add(2);
numbers.add(8);
numbers.add(5);
}
public TreeSet<Integer> getNumeros(){ return numbers; }
}
Clase ConjuntoSet
import java.util.ArrayList;
import java.util.Set;
public class ConjuntoSet {
private ArrayList <Set> conjuntoObjetos = new ArrayList <Set>();
public ConjuntoSet(){
//Creo objeto Estrellas y lo añado al conjuntoObjetos
Estrellas estrella1 = new Estrellas();
conjuntoObjetos.add(estrella1.getEstrellas());
//Creo objeto Numeros y lo añado al conjuntoObjetos
Numeros numero1 = new Numeros();
conjuntoObjetos.add(numero1.getNumeros());
}
public ArrayList<Set> getConjunto(){return conjuntoObjetos; }
}
Clase GestorIterador
import java.util.Iterator;
public class GestorIterador {
public static void main (String [] args){
ConjuntoSet prueba = new ConjuntoSet();
Iterator iter = prueba.getConjunto().iterator();
while(iter.hasNext()){
System.out.print(iter.next());}
}
}
Quizás si en la clase ConjuntoSet, creara fuera del contructor los new Estrellas y Numeros, podria llamarlos en el main con un get que los devolviera y hacer un Iterador independiente de cada uno, pero no me convence demasiado tampoco.
Después de mirar un poco algun ejercicio de compañeros añado la clase GestorIterador con lo que creo soluciona mi problema, que imprimia en conjunto y no por separado los elementos.
Clase GestorIterador (Mejorada creo)
import java.util.Iterator;
import java.util.Set;
public class GestorIterador {
public static void main (String [] args){
ConjuntoSet prueba = new ConjuntoSet();
Iterator <Set> iterConjunto = prueba.getConjunto().iterator();
while(iterConjunto.hasNext()){
Iterator iterObjetos = iterConjunto.next().iterator();
while(iterObjetos.hasNext()){
System.out.print(iterObjetos.next() + ", "); }
}
}
}
Veo no es lo mismo Iterador iter, que Iterador <Set> iter, le avisas que dentro del iter habra nuevos Objetos de tipo Set que puedes volver a iterar, eso creo, este ejercicio es algo lío