我偶然发现了问题的TObjectDoubleHashMap
。版本2.0.2不会覆盖hashCode
方法。
更新版本的trove(3.0.0)包括hashCode
。
注意,两个版本都覆盖了equals
方法。
为什么版本2中的hashCode
方法没有覆盖?也许在最初编写宝库地图后引入了覆盖hashCode
/ equals
的合同?或者它只是违反合同和后来修复的错误?如果它是一个错误而不是一个功能,我会感到非常惊讶,因为当它具有hashCode
equals
答案 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
界面的不同实现中正常工作。