最近,我一直在Map
中进行java
接口的实现。我理解HashMap
,一切都有道理。
但就LinkedHashMap
而言,根据我的知识,条目目前为止,条目有key
,value
,before
和after
。其中之前和之后跟踪插入顺序。
但是,在hashcode
中使用LinkedHashMaps
和存储桶概念对我没有意义。
I went through this article for understanding implementation of linkedHashMaps
有人可以解释一下吗?
答案 0 :(得分:6)
LinkedHashMap
仍然是HashMap
的一种类型。它使用与HashMap
相同的逻辑来查找密钥所属的存储区(用于get()
,put()
,containsKey()
等方法...) 。 hashCode()
用于定位该存储桶。这个逻辑对于这些操作的预期O(1)
性能至关重要。
LinkedHashMap
(使用before
和after
引用)的附加功能仅用于根据插入顺序迭代条目,因此它会影响{{的迭代器1 {}} Collection
,keySet()
& entrySet()
方法。它不会影响条目的存储位置。
如果没有哈希码和存储桶,values()
将无法在LinkedHashMap
预期时间内Map
中查找密钥。