24
我有以下代碼:流和不同的操作
class C
{
String n;
C(String n)
{
this.n = n;
}
public String getN() { return n; }
@Override
public boolean equals(Object obj)
{
return this.getN().equals(((C)obj).getN());
}
}
List<C> cc = Arrays.asList(new C("ONE"), new C("TWO"), new C("ONE"));
System.out.println(cc.parallelStream().distinct().count());
,但我不明白爲什麼distinct
返回3而不是2
啊哈,你與Java 8.嘗試嘗試還要在'C'類中重寫'hashCode()'。如果兩個'C'對象相等,則它們的哈希碼必須相同。 – Jesper
在overrided'equals'中放置一個斷點,看看是否'distinct'。 –
@Jesper,在http://download.java.net/jdk8/docs/api/java/util/stream/Stream.html#distinct- –