Comprobar que todos los elementos de un "Set" cumplan la misma condicion

Iniciado por danixd, 2 Enero 2015, 21:22 PM

0 Miembros y 1 Visitante están viendo este tema.

danixd

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

~ Yoya ~

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.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.