Autor Tema: Concepto definición de polimorfismo en Java explicación didáctica idea CU00678B  (Leído 2451 veces)

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
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()+", ");
            }
        }
    }
}
 
« Última modificación: 16 de Agosto 2017, 17:57 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
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

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
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()+", ");
            }
        }
    }
}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".