我知道Hashmap如何在内部工作。 Linkedhashmap正在扩展Hashmap类。那么Linkedhashmap如何能够维护插入顺序。我已经阅读了Linkedhashmap的javadoc,但它没有任何关于此的细节。有人可以帮我理解吗?
提前致谢。
答案 0 :(得分:5)
http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html
实施背后的理念非常简单。它扩展了常规hashMap(因此它具有所有hashMap好东西),但在添加元素时也构建双链表。
(条目也从HashMap.Entry扩展,因此它们有指向之前和之后的指针) 所以所有条目都是有序的HEAD - > Entry1< - > Entry2 ......< - TAIL
并同时保留在标准的HashSet中(我假设您熟悉实现)。
现在,当迭代它时,使用链接的条目列表。
答案 1 :(得分:0)
它按照插入顺序维护地图中条目的链接列表。这有助于维护迭代顺序,元素将按照它们首次添加的顺序返回。
您也希望在开始比较时阅读此帖子,您可能会更好地理解:Difference between HashMap, LinkedHashMap and TreeMap
答案 2 :(得分:0)
在内部,它维护双链表(Map.Entry)以按顺序存储对象,因为双链表存储了上一个节点和下一个节点的地址。
同样,您也可以签入源代码。
答案 3 :(得分:0)
之前和之后的参考字段为 LinkedHashMap 的所有条目维护一个双向链接列表。使用before和after字段,我们可以遍历 LinkedHashMap 的所有条目。
内部的LinkedHashMap:
http://techmastertutorial.in/java-collection-internal-linked-hashmap.html