我有一個名爲Artifacts的對象的TreeSet。我已經覆蓋了equals和散列碼方法的對象,像這樣:Java TreeSet不存儲唯一值
@Override
public int hashCode() {
return new HashCodeBuilder(17, 31). // two randomly chosen prime numbers
// if deriving: appendSuper(super.hashCode()).
append(artifactId).
toHashCode();
}
@Override
public boolean equals(Object arg0) {
Artifact obj=(Artifact)arg0;
if(this.getArtifactId().equalsIgnoreCase(obj.getArtifactId()))
{
return true;
}
return false;
}
我已經把打印的equals方法,它永遠不會被調用。我已經用一個比較器實例化TreeSet,如下所示:
TreeSet<Artifact> syncedList = new TreeSet<Artifact>(new ArtifactComparator());
我讀過TreeSet根據等於重寫確定它的唯一性。
我看到TreeSet中具有相同ArtifactId的多個對象,並非像我需要的那樣是唯一的。
在我的等號和散列碼方法中缺少一些東西嗎?