Busca información en la documentación oficial de Java sobre la interface Iterable. ¿Qué clases de lasRespuesta:
que conoces implementan esta interface? ¿Qué método han de tener disponible las clases que
implementan esta interface? ¿Para qué sirve este método?
import java.util.*;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class EjercicioPolimorfismo {
public static void main (String [] args) {
// Declaración del ArrayList
ArrayList<Set> planetasYCifras = new ArrayList<Set>();
String [] planetasArr = {"sol", "luna", "saturno"};
// Declaración del HashSet + inicialización
HashSet<String> planetas = new HashSet<String>(Arrays.asList(planetasArr));
// Declaración del TreeSet
TreeSet<Integer> cifras = new TreeSet<Integer>();
int [] cifrasArr = {2, 8, 5};
// Rellenado del TreeSet
for (Integer cifr: cifrasArr) {
cifras.add (cifr);
}
// Rellenado del ArrayList con el HashSet y el TreeSet
planetasYCifras.add (planetas);
planetasYCifras.add (cifras);
// Iterador para el ArrayList
Iterator<Set> itPYC = planetasYCifras.iterator();
Set tmpSet;
Object tmpObj;
// Recorre el ArrayList
while (itPYC.hasNext()) {
tmpSet = itPYC.next();
// Discriminar tipo de datos en ArrrayList para mostrar su contenido
tmpObj = null; //
if (tmpSet instanceof java.util.HashSet) {
System.out.println ("\n\tElementos del HashSet ");
Iterator<HashSet> itHS = tmpSet.iterator();
while (itHS.hasNext()) {
if (tmpObj != null) { System.out.print (", "); }
tmpObj = itHS.next();
System.out.print (tmpObj );
}
System.out.print (".");
} else if (tmpSet instanceof java.util.TreeSet) {
System.out.println ("\n\tElementos del TreeSet ");
TreeSet ts = (TreeSet) tmpSet; // conversión de tipo para usar descendingIterator
Iterator<TreeSet> itTS = ts.descendingIterator();
while (itTS.hasNext()) {
if (tmpObj != null) { System.out.print (", "); }
tmpObj = itTS.next();
System.out.print (tmpObj );
}
System.out.print (".");
}
} // fin del while itPYC
} // fin del main
} // Fin de la clase EjercicioPolimorfismo
Este ejercicio me ha hecho bucear en la documentación de las clases java. :PIterator<HashSet> itHS = tmpSet.iterator();por:
Iterator<String> itHS = tmpSet.iterator();Pero verás que me da el mismo warning.
import java.util.*;
// import java.util.ArrayList;
// import java.util.HashSet;
// import java.util.TreeSet;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class EjercicioPolimorfismoN {
public static void main (String [] args) {
System.out.println ("\nVersion N:");
// Declaración del ArrayList
ArrayList<Set> planetasYCifras = new ArrayList<Set>();
String [] planetasArr = {"sol", "luna", "saturno", "pluton"};
// Declaración del HashSet + inicialización
HashSet<String> planetas = new HashSet<String>(Arrays.asList(planetasArr));
// Declaración del TreeSet
TreeSet<Integer> cifras = new TreeSet<Integer>();
int [] cifrasArr = {2, 8, 5, -1, 16};
// Rellenado del TreeSet
for (Integer cifr: cifrasArr) {
cifras.add (cifr);
}
// Rellenado del ArrayList con el HashSet y el TreeSet
planetasYCifras.add (planetas);
planetasYCifras.add (cifras);
// Iterador para el ArrayList
Iterator<Set> itPYC = planetasYCifras.iterator();
Set tmpSet;
Object tmpObj;
// Recorre el ArrayList
while (itPYC.hasNext()) {
tmpSet = itPYC.next();
// Discriminar tipo de datos en ArrrayList para mostrar su contenido
tmpObj = null; //
if (tmpSet instanceof java.util.HashSet) {
System.out.println ("El objeto tmpSet es de la clase: " +tmpSet.getClass() + ".\nElementos del HashSet " + tmpSet.size() );
// HashSet hs = (HashSet) tmpSet;
Iterator<String> itHS = tmpSet.iterator();
// Iterator<HashSet> itHS = tmpSet.iterator();
while (itHS.hasNext()) {
if (tmpObj != null) { System.out.print (", "); }
tmpObj = itHS.next();
System.out.print (tmpObj );
}
System.out.println (".");
} else if (tmpSet instanceof java.util.TreeSet) {
System.out.println ("El objeto tmpSet es de la clase: " +tmpSet.getClass() + ".\nElementos del TreeSet " + tmpSet.size() );
TreeSet ts = (TreeSet) tmpSet; // conversión de tipo para usar descendingIterator
Iterator<Integer> itTS = ts.descendingIterator();
// // Iterator<TreeSet> itTS = ts.descendingIterator();
while (itTS.hasNext()) {
if (tmpObj != null) { System.out.print (", "); }
tmpObj = itTS.next();
System.out.print (tmpObj );
}
System.out.println (".");
}
} // fin del while itPYC
} // fin del main
} // Fin de la clase EjercicioPolimorfismoN
import java.util.*;
//https://www.aprenderaprogramar.com/foros/index.php?topic=1067.0
public class EjercicioPolimorfismo2 {
public static void main (String [] args) {
// Declaración del ArrayList
ArrayList<Set> planetasYCifras = new ArrayList<Set>();
String [] planetasArr = {"sol", "luna", "saturno"};
// Declaración del HashSet + inicialización
Set<String> planetas = new HashSet<String>(Arrays.asList(planetasArr));
// Declaración del TreeSet
Set<Integer> cifras = new TreeSet<Integer>();
int [] cifrasArr = {2, 8, 5};
// Rellenado del TreeSet
for (Integer cifr: cifrasArr) {
cifras.add (cifr);
}
// Rellenado del ArrayList con el HashSet y el TreeSet
planetasYCifras.add (planetas);
planetasYCifras.add (cifras);
// Iterador para el ArrayList
Iterator<Set> itPYC = planetasYCifras.iterator();
Set tmpSet;
String tmpStr = ""; Integer tmpInt;//
Object tmpObj;
// Recorre el ArrayList
boolean esElPrimero = true;
while (itPYC.hasNext()) {
tmpSet = itPYC.next();
if (tmpSet instanceof java.util.HashSet) {
System.out.print ("\n\tElementos del HashSet: ");
Iterator itHS = tmpSet.iterator();
while (itHS.hasNext()) {
if (esElPrimero == false) {System.out.print (", ");}
esElPrimero=false;
tmpStr = (String)itHS.next();
System.out.print (tmpStr);
}
System.out.print (".");
}
esElPrimero = true;
if (tmpSet instanceof java.util.TreeSet) {
System.out.print ("\n\tElementos del TreeSet: ");
Iterator itTS = tmpSet.iterator();
while (itTS.hasNext()) {
if (esElPrimero == false) {System.out.print (", ");}
esElPrimero=false;
tmpInt = (Integer)itTS.next();
System.out.print (tmpInt);
}
System.out.print (".");
}
} // fin del while itPYC
} // fin del main
} // Fin de la clase EjercicioPolimorfismo
Iterator itHS = tmpSet.iterator();Cuando yo usaba:
Iterator <String> itHS = tmpSet.iterator();Y ese cambio tan nimio ha eliminado el warning.
import java.util.Set;
import java.util.List;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
public class Polimorfismo
{
public static void main(String [] args )
{
//DECLARACION ATRIBUTOS.
List<Set> miLista = new ArrayList<Set>();
Set<Integer> contenedorDeNumeros = new TreeSet<Integer>();
Set<String> contenedorDeCadenas = new HashSet<String>();
//RELLENO DE LOS 2 SETS.
contenedorDeNumeros.add(new Integer(2));
contenedorDeNumeros.add(new Integer(8));
contenedorDeNumeros.add(new Integer(5));
contenedorDeCadenas.add("sol");
contenedorDeCadenas.add("luna");
contenedorDeCadenas.add("saturno");
//CARGA DE LOS SETS DENTRO DEL ARRAYLIST.
miLista.add(contenedorDeCadenas);
miLista.add(contenedorDeNumeros);
//CREACION DE ITERACIONES Y ELEMENTOS AUXILIARES.
Iterator<Set> it1 = miLista.iterator();
Iterator it2 = null;
String coma = ", "; String punto = ".";
Set tmpSet = null;
Object tmpObj = null;
while (it1.hasNext())
{
tmpSet = it1.next();
/** Discriminar tipo de datos en ArrayList para mostrar su contenido */
// en caso de que la clase instanciada sea un Hashset.
if (tmpSet instanceof java.util.HashSet)
{
System.out.println ("\n El objeto leido del ArrayList es del tipo: " + tmpSet.getClass().getName());
it2 = tmpSet.iterator();
}
// en caso de que la clase instanciada sea un TreeSet, en este caso tenemos que ordenar el iterador descendentemente.
if (tmpSet instanceof java.util.TreeSet)
{
System.out.println ("\n El objeto leido del ArrayList es del tipo: " + tmpSet.getClass().getName());
TreeSet tmpTS = (TreeSet) tmpSet;
it2 = tmpTS.descendingIterator();
}
while (it2.hasNext())
{
if (tmpObj != null) { System.out.print(coma);}
tmpObj= it2.next();
System.out.print (tmpObj);
}
System.out.print (punto);
}
}
}
int primitivo = 10;
Integer objeto = primitivo;
Son posibles gracias a los procesos automáticos propios del compilador java "Boxing" y "UnBoxing" lo que podríamos traducir como "envuelto" (referente a un tipo objeto) y "suelto o desenvuelto" (referente a un tipo primitivo). En tu codigo podemos encontrar el siguiente fragmento de código: contenedorDeNumeros.add(new Integer(2));
el cual podemos sustituir de forma mas sencilla por una sintaxis como: contenedorDeNumeros.add(2);
donde se esta agregando un tipo primitivo, pero el compilador lo envuelve automáticamente (Boxing) debido a que la colección contenedorDeNumeros solo admite tipos Integer.import java.util.Set;
import java.util.List;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
public class Polimorfismo
{
public static void main(String [] args )
{
//DECLARACION ATRIBUTOS.
List<Set> miLista = new ArrayList<Set>();
Set<Integer> contenedorDeNumeros = new TreeSet<Integer>();
Set<String> contenedorDeCadenas = new HashSet<String>();
//RELLENO DE LOS 2 SETS.
//Usamos Una forma mas sencilla de agregar los objetos tipo Integer gracias al proceso automatico que realiza el compilador conocido como "Boxing"
contenedorDeNumeros.add(2);
contenedorDeNumeros.add(8);
contenedorDeNumeros.add(5);
contenedorDeCadenas.add("sol");
contenedorDeCadenas.add("luna");
contenedorDeCadenas.add("saturno");
//CARGA DE LOS SETS DENTRO DEL ARRAYLIST.
miLista.add(contenedorDeCadenas);
miLista.add(contenedorDeNumeros);
//CREACION DE ITERACIONES Y ELEMENTOS AUXILIARES.
Iterator<Set> it1 = miLista.iterator();
Iterator it2 = null;
Set tmpSet;
Object tmpObj;
String comaOPunto = "";
while (it1.hasNext())
{
tmpSet = it1.next();
int i = 1;//Contador que se utilizara para controlar el valor de la variable tipo String comaOPunto
/** Discriminar tipo de datos en ArrayList para mostrar su contenido */
// en caso de que la clase instanciada sea un Hashset.
if (tmpSet instanceof HashSet) /*Se reduce la sintaxis y se mantiene la misma eficiencia, al sustituir "tmpSet instanceof java.util.HashSet" por
"tmpSet instanceof HashSet"*/
{
System.out.println ("\nEl objeto leido del ArrayList es del tipo: " +
tmpSet.getClass().getSimpleName() + //Se sustituye el metodo getName(); por el metodo getSimpleName();
" y contiene los elementos: \n");
it2 = tmpSet.iterator();
}
// en caso de que la clase instanciada sea un TreeSet, en este caso tenemos que ordenar el iterador descendentemente.
else if (tmpSet instanceof TreeSet)
{
System.out.println ("\n\nEl objeto leido del ArrayList es del tipo: " + tmpSet.getClass().getSimpleName() + " y contiene los elementos: \n");
TreeSet tmpTS = (TreeSet)tmpSet;
it2 = tmpTS.descendingIterator();
}
while (it2.hasNext())
{
tmpObj= it2.next();
if (i < tmpSet.size()) {comaOPunto = ", ";}else{comaOPunto = ".";}
System.out.print (tmpObj+comaOPunto);
i++;
}
i = 1;
}
}
}
Espero que encuentres algo util.import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.Iterator;
public class CrearHashArrayTreeSet{
private List <Set> lista1;
private Set <String> lista2;
private Set <Integer> lista3;
Iterator <String> iterador1;
Iterator <Integer> iterador2;
public CrearHashArrayTreeSet(){
lista1 = new ArrayList <> ();
lista2 = new HashSet <> (Arrays.asList("luna", "sol", "saturno"));
lista3 = new TreeSet <> (Arrays.asList(2, 8, 5));
}
public void añadirListas(){
lista1.add(lista2);
lista1.add(lista3);
}
public void mostrarArrayList(){
iterador1 = lista2.iterator();
while(iterador1.hasNext()){
System.out.print("\""+iterador1.next()+"\", ");
}
String coma = ", ";
String punto =".";
iterador2 = lista3.iterator();
while(iterador2.hasNext()){
System.out.print(iterador2.next());
if(iterador2.hasNext()){
System.out.print(coma);
}else{
System.out.print(punto);
}
}
}
}
public class TestCrearHashArrayTreeSet{
public static void main(String [] args){
CrearHashArrayTreeSet objmain = new CrearHashArrayTreeSet();
objmain.añadirListas();
objmain.mostrarArrayList();
}
}