Estoy tratando de verificar si todos los elementos de una lista de arreglo son los mismos o no. Este es mi código:
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(2,2,4,2));
for (int z = 0; z < arr.size(); z++) {
if(!arr.get(z++).equals(arr.get(z--))) {
System.out.println("same");
}else {
System.out.println("differnt");
}
}
Poner los elementos en una Set
. Si el conjunto resultante tiene un tamaño de 1, a continuación, todos los elementos han sido la misma. Una línea de código, no hay bucles, no hay índices, trabaja con cada colección:
boolean allTheSame = new HashSet<Integer>(list).size() == 1;
System.out.println(allTheSame ? "same" : "different");
(Edited :)
Podría valer la pena señalar que si la lista es grande, y probablemente contiene muchos elementos diferentes, entonces la construcción de un Set
impondrá cierta sobrecarga de memoria que puede ser evitado, si se desea. En este caso, usted iterar sobre la lista y comparar todos los elementos a la primera. Sin embargo, usted debe no comprobar los elementos de identidad con ==
. En su lugar, usted debe comparar el uso de su equals
método, o, si lo desea manejar amablemente null
entradas, utilizando Objects#equals
.
Un ejemplo de cómo resolver esto de manera eficiente y genéricamente se da en la respuesta por Zabuza