1.https://thinkwon.blog.youkuaiyun.com/article/details/104588551
2.https://www.cnblogs.com/iwenwen/p/11052689.html
3.https://blog.51cto.com/u_14989534/2547134
集合之间对比总结
List
有序列表,元素允许重复,可以插入多个null元素
ArrayList | LinkedList | Vector | |
---|---|---|---|
底层数据结构 | 数组 | 双向链表 | 数组 |
是否线程安全 | 非线程安全 | 非线程安全 | 线程安全 |
顺序 | 有序 | 有序 | 有序 |
null | 允许重复,可存多个null | 允许重复,可存多个null | 允许重复,可存多个null |
特点 | 检索效率高,增删效率低 | 检索效率低,增删效率高 | 检索效率高,增删效率低。 线程安全,效率比ArrayList低 |
初始化长度 | 初始化为空,第一次扩容为10 | - | 10 |
扩容 | 1.5倍扩容 | - | 2倍扩容 |
Set
无序列表,元素不可重复,只能存入一个null元素
HashSet | LinkedHashSet | TreeSet | |
---|---|---|---|
底层数据结构 | HashMap | LinkedHashMap | 红黑树 |
是否线程安全 | 非线程安全 | 非线程安全 | 非线程安全 |
顺序 | 无序 | 有序,元素添加顺序 | 有序 |
null | 不允许重复,可存一个null | 不允许重复,可存一个null | 不允许重复,不能存null |
初始化长度 | 16 | - | - |
扩容 | 2倍扩容 | - | - |
Map
提供了一组键值的映射,关键字应该是唯一的,每个key 只能映射一个value
HashMap | LinkedHashMap | HashTable | TreeMap | |
---|---|---|---|---|
底层数据结构 | 数组,链表,红黑树 | 数组,链表,红黑树 | 数组,链表 | 红黑树 |
是否线程安全 | 非线程安全 | 非线程安全 | 线程安全 | 非线程安全 |
顺序 | 无序 | 有序,元素添加顺序 | 无序 | 有序 |
null | k可以是null,v可重复 | k可以是null,v可重复 | k不可是null,v可重复 | k默认不可是null,实现定制比较器,避免空指针异常就可以强制存null |
初始化长度 | 16 | - | 11 | - |
扩容 | 2倍扩容 | - | 2倍扩容+1 | - |