Hola a todos
Expongo la resolución al ejercicio sobre el polimorfismo CU00678B del curso de iniciación a Java con BlueJ.
package aplicacion;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
public class Principal {
public static void main(String[] args) {
//Creo una lista ArrayList de tipo interfaz Set
ArrayList<Set> lista = new ArrayList<Set>();
//Creo una lista HashSet de tipos String y la relleno
HashSet<String> astros = new HashSet<String>();
astros.add("sol");
astros.add("luna");
astros.add("saturno");
//Creo una lista TreeSet de tipo Integer y la relleno
TreeSet<Integer> numeros = new TreeSet<Integer>();
numeros.add(2);
numeros.add(8);
numeros.add(5);
//Relleno el ArrayList con 2 tipos diferentes, la lista los acepta porque los tipos HashSet y TreeSet implementan la interfaz Set
lista.add(astros);
lista.add(numeros);
//Creo un objeto it de tipo Iterator con objetos de interfaz Set
Iterator<Set> it = lista.iterator();
Set cursor;
//Recorro la lista para acceder a cada posición del iterador
while(it.hasNext()){
cursor = (Set) it.next();
Iterator<Set> it2 = cursor.iterator();
if(cursor instanceof HashSet){
System.out.println("Elementos de HashSet.");
}else{
System.out.println("Elementos del TreeSet.");
}
int i=0;
//Recorro el nuevo iterador y accedo a cada uno de sus elementos
while(it2.hasNext()){
//Imprimo cada valor del ArrayList
System.out.println("El elemento "+(i++)+" contiene el valor: "+it2.next());
}
}
}
}
Salida por pantalla:
Elementos de HashSet.
El elemento 0 contiene el valor: sol
El elemento 1 contiene el valor: saturno
El elemento 2 contiene el valor: luna
Elementos del TreeSet.
El elemento 0 contiene el valor: 2
El elemento 1 contiene el valor: 5
El elemento 2 contiene el valor: 8