Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: danixd en 2 Enero 2015, 21:22 PM

Título: Comprobar que todos los elementos de un "Set" cumplan la misma condicion
Publicado por: danixd en 2 Enero 2015, 21:22 PM
Hola, soy nuevo por este foro. He estado buscando por aqui para ver si habia algo parecido, pero viendo que no os expongo mi duda:

Dado un conjunto de numeros
Teniendo el conjunto:

Set<Double> numeros= new HashSet<Doube>();

Se pide que todos los numeros del conjunto tengan el mismo valor.

Lo que se me ha ocurrido es recorrer el conjunto usando un bucle de la siguiente forma:

Código (java) [Seleccionar]

for(Double num: numeros){
    if((num.equals(numeros.iterator().next())==false)
        throw new IllegalArgumentException("No son iguales");
}


Se que el codigo funciona, pero me gustaria saber si hay alguna forma  de hacerlo sin usar iterator.

Gracias
Título: Re: Comprobar que todos los elementos de un "Set" cumplan la misma condicion
Publicado por: ~ Yoya ~ en 6 Enero 2015, 17:38 PM
La forma mas fácil, rápida y simple es verificar si el tamaño del Set que haz creado es mayor a 1, si es mayor a 1 es porque contiene elementos con valores distintos. Los Set por naturaleza no contienen valores duplicados.




También puedes utilizar el nuevo feature para trabajar con colecciones en Java 8 (Stream).

Código (java) [Seleccionar]

    public static void main(String [] args) {
        Set<Double> numeros = new HashSet<Double>();
        numeros.add((double)222);
        numeros.add((double)223);
        numeros.add((double)224);
        numeros.add((double)222);
        numeros.add((double)222);
        System.out.println("Distintos: "+(numeros.stream().distinct().count() != 1));
    }


Result:
Distintos: true
Saludos.