Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: LuisM en 26 de Julio 2017, 15:26

Título: Concepto definición de polimorfismo en Java explicación didáctica idea CU00678B
Publicado por: LuisM en 26 de Julio 2017, 15:26
Hola a todos !! paso a dejar el codigo del ejercicio de la clase CU00678B del curso de programador Java desde cero. Desde ya muchas gracias. Saludos

Luis

EJERCICIO

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.

Rta: Aclararo que estas dos clases tienen distintos comportamientos. HashSet muestra los elementos sin un orden determinado y TreeSet los muestra ordenados. El punto e) que pide que se muestre por pantalla las dos listas tenemos la dificultad que "sol","luna" y "saturno" quizás se muestren en ese orden pero es imposible que cuando les toque a los nros lo hagan en ese orden, ya que el orden será: 2, 5 y 8.

Código: [Seleccionar]
import java.util.*;
public class Polimorfismo {
    public static void main(String[] args) {
        //lista principal que contiene una lista HashSet y otra TreeSet
        ArrayList<Set> lista = new ArrayList<Set>();
        //Lista secundaria con strings
        HashSet<String> hs = new HashSet<String>();
        hs.add("sol");
        hs.add("luna");
        hs.add("saturno");
        //lista secundaria con numeros
        TreeSet<Integer> ts = new TreeSet<Integer>();
        ts.add(2);
        ts.add(8);
        ts.add(5);
        //Agrego al ArrayList las2  listas
        lista.add(hs);
        lista.add(ts);
       
        Set item = null;
        Iterator<Set> it = lista.iterator();
        // recorrido por la lista principal
        while(it.hasNext()){
            item = it.next();
            Iterator<Set> it2 = item.iterator();
            int i=0;
            // recorrico por las listas secundarias
            while(it2.hasNext()){
                System.out.print(it2.next()+", ");
            }
        }
    }
}
 
Título: Re:Concepto definición de polimorfismo en Java explicación didáctica idea CU00678B
Publicado por: Alex Rodríguez en 16 de Agosto 2017, 18:04
Hola LuisM, cumples con lo que se pedía, pero al compilar me ha aparecido un Warning que indica "uses unchecked or unsafe operations"

En este hilo puedes ver una solución donde no aparece warning: https://www.aprenderaprogramar.com/foros/index.php?topic=2384.0

Sería interesante que compararas tu solución con esta otra planteada y trates de determinar el por qué del warning, y tratar de eliminarlo. Este otro hilo puede ayudarte: https://www.aprenderaprogramar.com/foros/index.php?topic=2227.0

Saludos
Título: Re:Concepto definición de polimorfismo en Java explicación didáctica idea CU00678B
Publicado por: LuisM en 16 de Agosto 2017, 20:14
Muchas gracias Alex por tu corrección y por tus sugerencias !!. Paso a contarte que con el BlueJ (4.0.1) que uso pude compilar perfectamente y el resultado fue el requerido por el ejercicio. Por suerte tengo instalado el NetBeans (8.2 en Español) y en el código aparecieron indicaciones para corregir a pesar que pude compilar el codigo original y correrlo bien. Me puse a tratar de evitar esas advertencias y logré quitarlas -y de paso quité una línea que estaba de más-
Pongo el código corregido y espero que ahora funcione sin warnings
Código: [Seleccionar]
import java.util.*;
public class Polimorfismo {
    public static void main(String[] args) {
        //lista principal que contiene una lista HashSet y otra TreeSet
        ArrayList<Set> lista = new ArrayList<Set>();
        //Lista secundaria con strings
        HashSet<String> hs = new HashSet<>();
        hs.add("sol");
        hs.add("luna");
        hs.add("saturno");
        //lista secundaria con numeros
        TreeSet<Integer> ts = new TreeSet<>();
        ts.add(2);
        ts.add(8);
        ts.add(5);
        //Agrego al ArrayList las2  listas
        lista.add(hs);
        lista.add(ts);
        Iterator<Set> it = lista.iterator();
        // recorrido por la lista principal
        while(it.hasNext()){
            Set item = it.next();
            Iterator<Set> it2 = item.iterator();
            // recorrido por las listas secundarias
            while(it2.hasNext()){
                System.out.print(it2.next()+", ");
            }
        }
    }
}