Foro de elhacker.net

Programación => 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
  1. for(Double num: numeros){
  2.    if((num.equals(numeros.iterator().next())==false)
  3.        throw new IllegalArgumentException("No son iguales");
  4. }

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
  1.    public static void main(String [] args) {
  2.        Set<Double> numeros = new HashSet<Double>();
  3.        numeros.add((double)222);
  4.        numeros.add((double)223);
  5.        numeros.add((double)224);
  6.        numeros.add((double)222);
  7.        numeros.add((double)222);
  8.        System.out.println("Distintos: "+(numeros.stream().distinct().count() != 1));
  9.    }

Result:
Código:
Distintos: true
Saludos.