Autor Tema: Por qué los elementos de HashSet no salen ordenados CU00678B. Polimorfismo java.  (Leído 3083 veces)

arcanFAC

  • Visitante
Hola, aquí presento este ejercicio aunque tengo mis lagunas en el tema. Me gustaria saber porqué cuando imprimo los objetos no me los imprime en el orden que los ingresé. Aunque la verdad no sé si como lo hize está del todo bn.

Citar
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.


Aquí mi codigo:


Código: [Seleccionar]
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Set;
public class Main {
public static void main(String[] args){
ArrayList<Set> listaObjetos = new ArrayList<Set>();
HashSet<String> cadenas = new HashSet<String>();
TreeSet<Integer> numeros = new TreeSet<Integer>();
cadenas.add("sol");
cadenas.add("luna");
cadenas.add("saturno");
        numeros.add(2);
        numeros.add(8);
        numeros.add(5);
        listaObjetos.add(cadenas);
        listaObjetos.add(numeros);
        for(Set opcion:listaObjetos){
        for(Object contenido: opcion){
    System.out.print(contenido + " ");
       }
       }
}

}


Saludos.  :P
« Última modificación: 05 de Abril 2015, 23:56 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Aprender java.CU00678B. Polimorfismo en java.
« Respuesta #1 en: 04 de Abril 2015, 11:37 »
Hola arcanFAC

Tu ejercicio presenta los datos solicitados, pero no usa iteradores como se pide en el apartado e) del enunciado.

Como ya sabes que con for each consigues el resultado. ¿Quieres probarlo con iteradores?.

Respecto al orden de salida de los elementos.
Si repasas la documentación de las clases en el API de Java, verás que en la clase HashSet dice: no se garantiza el orden de entrada de los elementos, es decir, que ni pueden estar ordenados tal como entraron ni ordenados específicamente de alguna forma (pruébalo y verás).
Y con la clase TreeSet usando su método descendingIterator() obtendrás una salida en orden descendente.

Saludos

 

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".