Hola momo!
Veo que has incluido mejoras positivas en este nuevo código y aunque casi aciertas, no has logrado exactamente lo que te pedí ni lo que pide el enunciado del ejercicio. Por tanto, hay unos cuantos puntos que te comentare.
1ro: Estamos trabajando con "polimorfismo" por lo tanto, mientras mas uses las ventajas del polimorfismo en este ejercicio (y en cada uno de los códigos que diseñes) obtendrás un código mejor estructurado y con mayor eficiencia. No estaria de mas que incluyas un: import java.util.List para luego en ves de ArrayList<Set>lista=new ArrayList<Set>();
declarar List<Set>lista=new ArrayList<Set>();
.
2do: Tu código esta mostrando por pantalla: "Saturno,Sol,Luna,2,5,8," y el ejercicio pide que muestre "sol, luna, saturno, 8, 5, 2.". La primera diferencia es el orden de los objetos y la segunda es que tu cadena termina con una coma "," cuando debería terminar con un punto "."
3ro: Has delclarado ArrayList<Set>lista2=new ArrayList<Set>();
y no le das ninguna utilidad (imagino que fue un descuido no eliminar esa linea de código)
4to: Si te fijas, al compilar nos salta un "warning" Siempre que nos salte un warning debemos de buscar la forma de eliminarlo, un programa puede funcionar a pesar de contener un warning al compilar, pero esto significa deficiencia, o que hay algo que se podría corregir.
A continuación dejo una posible solución a este ejercicio, te sugiero que la analices y realices algunas pruebas y/o cambios.
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
public class TestPolimorfismo
{
public static void main(String []args)
{
//Creacion de objetos de tipos dinámicos List y Set.
List<Set> listObjsUniversoYNumeros = new ArrayList<Set>();
Set<String> universo = new HashSet<String>();
Set<Integer> numeros = new TreeSet<Integer>();
//agregando elementos de tipo String a la colección universo de tipo HashSet
universo.add("sol"); universo.add("luna"); universo.add("saturno");
//agregando elementos de tipo Integer a la colección números de tipo TreeSet
numeros.add(2); numeros.add(8); numeros.add(5);
//agregando elementos de tipos (HashSet y TreeSet) que implementan a la clase Set, a la colección listObjsUniversoYNumeros de tipo ArrayList
listObjsUniversoYNumeros.add(universo);
listObjsUniversoYNumeros.add(numeros);
//Usando iteradores en colecciones.
Iterator<Set> iteratorAL = listObjsUniversoYNumeros.iterator();
Set elemento0 = iteratorAL.next();
Set elemento1 = iteratorAL.next();
/*El compilador no llega a poder verificar qué tipos contienen los Set, eliminamos la declaración de tipo de Iterator (Iterator<Set>) y dejamos que sea
* el compilador en tiempo dinámico quien lo determine, así corregimos el warning que nos salta*/
Iterator iterElemento0 = elemento0.iterator();
Iterator iterElemento1 = elemento1.iterator();
//recorriendo y mostrando por pantalla los elementos de las colecciones universo y numeros, a través de Iterator
String separador = ", ";
System.out.print("\nConjunto de los objetos contenidos en cada una de las sub-colecciones que contiene la colección listObjsUniversoYNumeros: ");
while(iterElemento0.hasNext())
{
System.out.print(iterElemento0.next() + separador);
}
int i = 0;
while(iterElemento1.hasNext())
{
i++;
if(i == elemento1.size())
{
separador = ".";
}
System.out.print(iterElemento1.next() + separador);
}
System.out.println("\nTotal: " + (universo.size() + numeros.size()) + " elementos.");
}
}
Nota: El orden en que se muestran los objetos por pantalla, (se puede corregir) continua diferente con relación a el orden que se muestra en el ejercicio.
Saludos!