|
|
上面可以看出LinkedHashMap是HashMap的子类。它的特点是:
LinkedHashMap是Hash表和链表的实现,并且依靠着双向链表保证了迭代顺序使插入的顺序。非线程安全
设计原理
LinkedHashMap相比较HashMap来说,增加了一个双向链表
来保证key的顺序。
双向链表这种数据结构,最关键的是保证在增加节点、删除节点时不要断链。
|
|
在LinkedHashMap定义了一个头指针header,它不存储任何数据。标记before和after两个指针。
|
|
bullet的实体Entry继承了HashMap的Node
|
|
LinkedHashMap还有一个私有变量accessOrder,默认为false,即按照插入顺序遍历。如果设置为true则按照访问顺序遍历。这里我不太懂按照访问顺序遍历什么意思,还专门搜了一下:当调用LinkedHashMap的get(key)或者put(key, value)时,碰巧key在map中被包含,那么LinkedHashMap会将key对象的entry放在线性结构的最后。
构造函数
|
|
增
LinkedHashMap重写了newNode(),在每次构建新节点时,通过linkNodeLast()方法,将新节点链接到内部双向链表的尾部
删
|
|
reference: