Skip to content

Commit f35cb77

Browse files
committed
💬 update LinkedHashMap
1 parent 71d3fd9 commit f35cb77

1 file changed

Lines changed: 25 additions & 1 deletion

File tree

MD/collection/LinkedHashMap.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,28 @@
6262

6363
其中 `Entry` 继承于 `HashMap``Entry`,并新增了上下节点的指针,也就形成了双向链表。
6464

65-
还有一个 header 的成员变量,是这个双向链表的头结点。
65+
还有一个 `header` 的成员变量,是这个双向链表的头结点。
66+
67+
上边的 demo 总结成一张图如下:
68+
69+
![](https://ws1.sinaimg.cn/large/006tKfTcly1fo6n0jdrwqj310w0mqac0.jpg)
70+
71+
第一个类似于 `HashMap` 的结构,利用 `Entry` 中的 `next` 指针进行关联。
72+
73+
下边则是 `LinkedHashMap` 如何达到有序的关键。
74+
75+
就是利用了头节点和其余的各个节点之间通过 `Entry` 中的 `after``before` 指针进行关联。
76+
77+
78+
其中还有一个 `accessOrder` 成员变量,默认是 `false`,便是默认按照插入顺序排序,为 `true` 时按照访问顺序排序,也可以调用:
79+
80+
```
81+
public LinkedHashMap(int initialCapacity,
82+
float loadFactor,
83+
boolean accessOrder) {
84+
super(initialCapacity, loadFactor);
85+
this.accessOrder = accessOrder;
86+
}
87+
```
88+
89+
这个方法

0 commit comments

Comments
 (0)