hashCode()在HashSet或HashMap中扮演的角色是什么

时间:2016-03-11 15:53:44

标签: java hashmap hashtable hashcode

this个问题的最高投票回答:

  

当使用基于散列的集合或映射(如HashSet,LinkedHashSet,HashMap,Hashtable或WeakHashMap)时,请确保放入集合中的键对象的hashCode()在对象位于其中时不会更改采集。确保这一点的防弹方法是使您的密钥不可变,这也有其他好处。

老实说,我不明白hashCode()HashSetHashMap集合对象方面扮演的角色是什么。

如何在基于散列的集合中使用hashCode()密钥对象方法? 可能是hashCode()个对象在其生命周期中发生变化的情况? 有人可以通过一些例子进一步阐述这方面的内容吗?

1 个答案:

答案 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