Trove哈希映射没有实现hashCode

时间:2012-02-15 12:17:59

标签: java hash trove4j

我偶然发现了问题的TObjectDoubleHashMap。版本2.0.2不会覆盖hashCode方法。

更新版本的trove(3.0.0)包括hashCode

注意,两个版本都覆盖了equals方法。

为什么版本2中的hashCode方法没有覆盖?也许在最初编写宝库地图后引入了覆盖hashCode / equals的合同?或者它只是违反合同和后来修复的错误?如果它是一个错误而不是一个功能,我会感到非常惊讶,因为当它具有hashCode

时,主要处理散列的类如何不会覆盖equals

1 个答案:

答案 0 :(得分:1)

  

在最初编写宝库地图之后,可能会推出覆盖hashCode / equals的合同吗?

没有。那是现在的回归。我相信至少早在1.1,但我找不到比1.3文档更早的内容。

  

或者只是违反合同和违规行为?

是。这违反了合同。请注意,java.util.Map有超出java.lang.Object的额外相等/ hashCode合约,IdentityHashMap和其他一些人明显违反了这一合同。

来自javadoc

public boolean equals(Object o)
     

将指定对象与此映射进行相等性比较。如果给定对象也是一个映射,并且两个true代表相同的映射,则返回Map。更正式地说,如果t1.entrySet().equals(t2.entrySet()),则两个映射t1和t2表示相同的映射。 这可确保equals方法在Map界面的不同实现中正常工作。