1.继承关系
|
|
LinkedHashMap是HashMap的子类,从面向对象设计思想上讲,LinkedHashMap更多的是增加或改写HashMap的方法。
2.Entry类
|
|
LinkedHashMapEntry是HashMap.Node的子类,构造方法直接调用父类构造方法,额外加多两个前后引用。
- next引用是提供给父类HashMap.Node构建HashMap的单链表的!
- before, after是构建一个双向回环链表!
- 两者并无关联,也不冲突!
3.图像理解数据结构
- 上一节提及到,双链表和HashMap并不冲突,所以HashMap部分可以参考HashMap。
- 以下为双向回环链表部分。
4.与HashMap比较
- 遍历集合时,LinkedHashMap保留元素进入顺序,HashMap则无法保证元素进入顺序。当然要耗费一点性能。
- LinkedHashMap每次都将元素加入至双向链表的尾部,利用这个特性实现LruCache,并不是因为LruCache的需要而实现了LinkedHashMap。