Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: arcanFAC en 02 de Abril 2015, 22:49

Título: Por qué los elementos de HashSet no salen ordenados CU00678B. Polimorfismo java.
Publicado por: arcanFAC en 02 de Abril 2015, 22:49
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
Título: Re:Aprender java.CU00678B. Polimorfismo en java.
Publicado por: toni_apr 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