我有一个名为 Artifacts 的对象 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 基于 equals 覆盖建立它的唯一性。
我在 TreeSet 中看到多个具有相同 ArtifactId 的对象,这不像我需要的那样唯一。
我的等号和哈希码方法中是否缺少某些内容?