4
« en: 28 de Mayo 2014, 13:52 »
Ok, gracias por tu respuesta y perdona por lo del código. Soy nuevo por aquí y no lo sabia.
En cuanto a la solución que me comentas, esa orientación era la que yo quería conseguir, pero me parecía que el código no era correcto. Me intento explicar.
Yo lo que he entendido sobre iterator es que lo que hacemos es crear una lista copia de la original para poder recorrerla. Pero para ello, en la sentencia debemos especificar el tipo de los elementos contenidos en la lista. En este caso los elementos de it1 son de tipo Set (implementan esa interface) y por lo tanto entiendo la sentencia:
Iterator<Set> it1 = listaObjetos.iterator();
Pero cuando pasamos al siguiente nivel, los objetos listas que estamos tratando tienen objetos de distintos tipos (una lista tiene String y la otra Integer). Por lo tanto, yo creía que el iterator que debíamos crear en ese segundo nivel debería contemplar eso. Pero no veía cómo podía especificar un tipo que pudiese abarcar esos dos. Para cada uno de ellos por separado, la sentencia sería:
Iterator<String> it2 = listaObjetos.iterator();
o
Iterator<Integer> it2 = listaObjetos.iterator();
Por eso no acabo de entender (a pesar que he comprobado que funciona correctamente) la sentencia:
Iterator<Set> it2 = objetoSet.iterator();
it2 sí es un objeto Set, pero sus elementos no (serán String o Integer, en este caso).
No es fácil de explicar por correo y no sé si te habrá quedado claro cuál es mi duda.
Un saludo y gracias de nuevo.