我有一个名为 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 的对象,这不像我需要的那样唯一。
我的等号和哈希码方法中是否缺少某些内容?