【发布时间】:2023-03-20 01:54:01
【问题描述】:
this 问题的最高投票答案是:
当使用基于散列的集合或映射(例如 HashSet、LinkedHashSet、HashMap、Hashtable 或 WeakHashMap)时,请确保您放入集合中的关键对象的 hashCode() 在对象位于收藏。确保这一点的万无一失的方法是使您的密钥不可变,这还有其他好处。
老实说,我不明白hashCode() 对HashSet 或HashMap 集合对象所起的作用。
hashCode() 的关键对象方法如何在基于哈希的集合中使用?
hashCode() 的对象在其生命周期中发生变化的情况可能是什么?
有人可以通过一些例子进一步详细说明这方面吗?
【问题讨论】:
-
不清楚您对“对象的 hashCode() 可能在其生命周期内发生变化的情况有什么问题?”正在尝试询问,但是如果您对对象进行变异,使得它们的哈希码在它们被用作哈希表中的键后发生变化,您将无法再次查找这些键...
-
基本上......这很复杂。您可以查看 Java 专家时事通讯 (javaspecialists.eu/archive/Issue235.html) 的最新一期,了解幕后需要什么。
-
作为对象在其生命周期中更改其哈希值的示例,请查看基于其内容的哈希值的众多集合。
标签: java hashmap hashtable hashcode