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:
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
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).
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.