前言
声明,本文用得是jdk1.8
前面已经讲了Collection的总览和剖析List集合以及散列表、Map集合、红黑树还有HashMap基础了:
本篇主要讲解LinkedHashMap~
看这篇文章之前最好是有点数据结构的基础:
当然了,如果讲得有错的地方还请大家多多包涵并不吝在评论去指正~
一、LinkedHashMap剖析
LinkedHashMap数据结构图:
ps:图片来源网络,侵删~
首先我们来看看类继承图:
我简单翻译了一下顶部的注释(我英文水平渣,如果有错的地方请多多包涵~欢迎在评论区下指正)
从顶部翻译我们就可以归纳总结出HashMap几点:
底层是散列表和双向链表
允许为null,不同步
插入的顺序是有序的(底层链表致使有序)
装载因子和初始容量对LinkedHashMap影响是很大的~
同时也给我带了几个疑问:
access-ordered和insertion-ordered具体的使用和意思
为什么说初始容量对遍历没有影响?
希望可以在看源码的过程中可以解决掉我这两个疑问~那接下来就开始吧~
1.1LinkedHashMap的域
1.2LinkedHashMap重写的方法
下面我列举就这两个比较重要的:
这就印证了我们的LinkedHashMap底层确确实实是散列表和双向链表~
在构建新节点时,构建的是LinkedHashMap.Entry 不再是Node.
1.3构造方法
可以发现,LinkedHashMap有5个构造方法:
下面我们来看看构造方法的定义是怎么样的: