我有一个关于TreeSet
集合和hashCode
方法的快速问题。我有一个TreeSet
并且我正在向它添加对象,在添加对象之前,我检查它是否存在于TreeSet
usingcontains
方法中。
我有 2 个不同的对象,每个对象都使用我的 hashCode 方法实现产生一个不同的 hashCode,示例如下:
public int hashCode()
{
int hash = 7;
hash = hash * 31 + anAttribute.hashCode();
hash = hash * 31 + anotherAttribute.hashCode();
hash = hash * 31 + yetAnotherAttribute.hashCode();
return hash;
}
特定运行的哈希码是:76126352 和 76126353(对象在一个属性中仅相差一位)。
对于这些对象, contains 方法返回 true,即使 hashCode 不同。任何想法为什么?这真的很令人困惑,我们将不胜感激。