gpt4 book ai didi

java - Trove HashMap 未实现 hashCode

转载 作者:太空宇宙 更新时间:2023-11-04 08:22:15 25 4
gpt4 key购买 nike

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

最新版本的 trove (3.0.0) 包括 hashCode .

请注意,equals 方法在两个版本中都被重写。

为什么版本 2 中没有重写 hashCode 方法?也许覆盖 hashCode/equals 的契约是在最初编写 trove map 之后引入的?或者只是违反了契约(Contract)并且后来修复了一个错误?如果这是一个错误而不是一个功能,我会感到非常惊讶,因为主要处理散列的类为什么在具有 equals

时不覆盖 hashCode

最佳答案

Maybe the contract for overriding hashCode/equals was introduced after the trove maps were written originally?

没有。那是很久以前的事了。我相信至少早在1.1,但我找不到任何早于1.3的东西文档。

Or is it simply a violation of the contract and a bug?

是的。这是违反契约(Contract)的行为。请注意,java.util.Mapjava.lang.Object 之上有其自己的额外等式/hashCode 约定,而 IdentityHashMap 和其他一些人故意违反了该约定。

来自javadoc :

public boolean equals(Object o)

Compares the specified object with this map for equality. Returns true if the given object is also a map and the two Maps represent the same mappings. More formally, two maps t1 and t2 represent the same mappings if t1.entrySet().equals(t2.entrySet()). This ensures that the equals method works properly across different implementations of the Map interface.

关于java - Trove HashMap 未实现 hashCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com