1. 经典比较结论
2. 单列集合 容器(collection)
2.1 列表(list)
2.1.1 数组列表(ArrayList)
(1)底层原理
底层封装了一个可变长度的数据对象,当数据存储到一个设定的阈值,内存会重新按照逻辑分配一个更大的数组
(2)重要结论
查询快,增删慢
- 由于底层是数组,所以增加和删除指定位置的元素,效率会比较慢
- 数组可以通过索引的方式来访问元素,所以查找快
-
2.1.2 链表集合(LinkedList)
(1)底层原理
封装了一个双向循环链表,增删元素的时候只需要改变,前后节点引用
(2)重要结论
查询快,增删慢
- 底层是链表,所以增删快
- 链表不支持索引查询,所以查询慢
-
2.1.3 Vector
线程安全:Vector 是通过在其几乎所有方法前加 synchronized 关键字来保证线程安全性
2.1.4 CopyOnWriteList
线程安全:CopyOnWriteList 则是通过数组复制的方法来保证线程安全的
2.2 集合(set)
2.2.1 HashSet
(1)底层原理
(2)重要结论
2.2.2 TreeSet
(1)底层原理
(2)重要结论
3. 双列集合 映射(map)
3.1 map
3.2 HashMap
4. 面试题