Buenas de nuevo,pongo aquí el código del ejercicio CU00678B del manual de programación java desde cero. Tengo que decir que me ha costado entender el concepto de Interface, y más que nada su función porque en un principio, parece que no aporta nada, y será un concepto que tendré que revisar nuevamente. Sin más dilaciones,dejo mi propuesta de resolución al ejercicio citado .
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
/**
* CU00678B
* 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.
*/
public class CU00678B{
public static void main (String[] args){
ArrayList<Set> miLista; //Una lista que contiene objetos de tipo Set(HashSet,TreeSet,EnumSet,etc)
HashSet<String> lista1; //Coleccion de elementos no duplicados respaldados por una tabla de hash
TreeSet<Integer> lista2; //una coleccion de elementos no duplicados basada en TreeMap
lista1 = new HashSet<String>();//añadiendo objetos tipo String (cadena de texto) al HashSet;
lista1.add("sol");
lista1.add("Luna");
lista1.add("Saturno");
lista2 = new TreeSet<Integer>();//Añadiendo objetos tipo Integer(int no es objeto) al Set
lista2.add(2);
lista2.add(8);
lista2.add(5);
miLista = new ArrayList<Set>();//añadiendo HashSet y Set a mi ArrayList(lo puedo hacer por indicar un tipo y no una clase)
miLista.add(lista1);
miLista.add(lista2);
Iterator<Set> listaIterada = miLista.iterator(); //creando iterador para miLista ArrayList<set>
Iterator<String> lista1Iterada = lista1.iterator(); //creando iterador para lista1 HashSet<String>
Iterator<Integer> lista2Iterada = lista2.iterator();//creando iterador para lista2 TreeSet<Integer>
//recorro con un iterador mi HashSet y mi Set ,contenidos en un Arraylist ,recorrido a su vez a traves de un iterador
while(listaIterada.hasNext()){
while(lista1Iterada.hasNext()){
System.out.print(lista1Iterada.next() + "," );
}
while(lista2Iterada.hasNext()){
System.out.print(lista2Iterada.next());
if (lista2Iterada.hasNext())
{
System.out.print(",");
}
}
listaIterada.next();
}
}
}