为什么我们在LinkedHashMap中需要hashcode和bucket概念

时间:2018-02-22 07:09:39

标签: java data-structures collections java-8 linkedhashmap

最近,我一直在Map中进行java接口的实现。我理解HashMap,一切都有道理。 但就LinkedHashMap而言,根据我的知识,条目目前为止,条目有keyvaluebeforeafter。其中之前和之后跟踪插入顺序。

但是,在hashcode中使用LinkedHashMaps和存储桶概念对我没有意义。

I went through this article for understanding implementation of linkedHashMaps

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:6)

LinkedHashMap仍然是HashMap的一种类型。它使用与HashMap相同的逻辑来查找密钥所属的存储区(用于get()put()containsKey()等方法...) 。 hashCode()用于定位该存储桶。这个逻辑对于这些操作的预期O(1)性能至关重要。

LinkedHashMap(使用beforeafter引用)的附加功能仅用于根据插入顺序迭代条目,因此它会影响{{的迭代器1 {}} CollectionkeySet()& entrySet()方法。它不会影响条目的存储位置。

如果没有哈希码和存储桶,values()将无法在LinkedHashMap预期时间内Map中查找密钥。