Raghave Shukla:
En Java 8, la documentación para () estado de funcionamiento intermedia distinta
Devuelve una secuencia que consta de los elementos distintos (de acuerdo con> Object.equals (Objeto)) de esta corriente. Para flujos de ordenadas, la selección de elementos distintos es estable (por elementos duplicados, el elemento que aparece primero
Pero no está recibiendo llamadas
Equivale método en mi clase de artículo
@Override
public boolean equals(Object obj) {
System.out.println(this.name+"<->"+((Item)obj).name);
return this.name.equals(((Item)obj).name);
}
Definición de datos en la clase de datos
public static List<Item> getItemList(){
itemData.add(new Item("Orange","Citrus Fruit","Orange",30,true,false));
itemData.add(new Item("Apple Green","Universal Fruit","Green",60,false,true));
itemData.add(new Item("Papaya","Wonderful Fruit","Yellow",120,false,true));
itemData.add(new Item("Papaya","Wonderful Fruit","Green",100,false,true));
.
.
.
itemData.add(new Item("Strawberry","Citrus Fruit","Red",25,true,false));
itemData.add(new Item("Sapota","Brown Fruit","Brown",32,false,true));
return itemData;
}
Utilizar Canales
Data.getItemList().stream().distinct().forEach(System.out::println)
pero me di cuenta que el método equals no se llama
Benoit:
Al lado equals()
, se debe redefinir hashCode()
el método también. El distinct()
método utiliza probablemente un conjunto internamente, que a su vez requiere una correcta ejecución hashCode()
. Más información .