this个问题的最高投票回答:
当使用基于散列的集合或映射(如HashSet,LinkedHashSet,HashMap,Hashtable或WeakHashMap)时,请确保放入集合中的键对象的hashCode()在对象位于其中时不会更改采集。确保这一点的防弹方法是使您的密钥不可变,这也有其他好处。
老实说,我不明白hashCode()
在HashSet
或HashMap
集合对象方面扮演的角色是什么。
如何在基于散列的集合中使用hashCode()
密钥对象方法?
可能是hashCode()
个对象在其生命周期中发生变化的情况?
有人可以通过一些例子进一步阐述这方面的内容吗?
答案 0 :(得分:1)
正如在这篇博客文章中非常清楚地说明的那样:讨论HashMap如何在Java中运行
Java中的HashMap适用于散列原理。它是一种数据结构,它允许我们存储对象并在我们知道密钥的情况下在恒定时间O(1)中检索它。在散列中,散列函数用于链接HashMap中的键和值。通过调用HashMap的put(key,value)方法存储对象,并通过调用get(key)方法检索对象。当我们调用put方法时,调用key对象的hashcode()方法,以便map的hash函数可以找到存储value对象的bucket位置,这实际上是内部数组的索引,称为表。
了解详情:http://javarevisited.blogspot.com/2011/02/how-hashmap-works-in-java.html#ixzz42bvBzm6Y