Linkedhashmap如何维护插入顺序

时间:2013-11-24 06:58:46

标签: java hashmap

我知道Hashmap如何在内部工作。 Linkedhashmap正在扩展Hashmap类。那么Linkedhashmap如何能够维护插入顺序。我已经阅读了Linkedhashmap的javadoc,但它没有任何关于此的细节。有人可以帮我理解吗?

提前致谢。

4 个答案:

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