1、List接口
1.1 特点
(1)有序
(2)查找效率高:根据key,查看value
1.2 数据结构
数组(哈希表)+链表(链地址法解决哈希表冲突)+红黑树(自平衡的二叉树。提高查找效率)
1.3 常见实现类
线程不安全:
1.3.1 ArrayList
1.数据结构
数组 Object[] elementData
2.使用场景
查找、遍历,插入、删除效率低
3.扩容
(1)初始化:
a.无参构造方法,数组的初始化容量为0;添加第一个元素时,数组容量扩容为10
b.有参构造方法:数组按照指定容量扩容
(2)容量不足时:
按照现有数组的1.5倍扩容
1.3.2 LinkedList
1.数据结构
链表:双向链表
2.使用场景
插入、删除效率高,查找效率低
3.扩容方式
链表动态扩容,每添加一个节点,链表动态扩容一个元素空间
线程安全:
1.3.3 Vector
1.数据结构
数组 Object[] elementData
2.扩容方式
(1)初始化:
a.无参构造方法:数组的初始化容量为10
b.有参构造方法:数组按照指定容量初始化
(2)容量不足时:
按照数组现有容量的2倍或指定容量值(capacityIncreament)进行扩容
3.线程安全
通过"synchronized"同步锁实现
1.3.4 Stack
特点:先进后出FILO 或者 后进先出LIFO
1.3.5 CopyOnWriteArrayList
1.数组结构
数组 Object[] array
2.线程安全
a.通过"ReenTrantLock"锁实现
b.CopyOnWrite:"写入"操作时,先进行数组复制,然后在新数组进行写入操作,然后替换;允许读写同时进行
2、Set 接口
2.1 特点
无需,不允许重复(值唯一)
2.2 常见实现类
2.2.1 HashSet
1.特点:无序
2.数据结构:HashMap
2.2.2 LinkedHashSet
1.特点:有序
2.数据结构:LinkedHashMap
2.2.3 TreeSet
1.特点:自动排序
2.数据结构:TreeMap
3、Queue 接口
1.特点
先进先出FIFO,队头出队,队尾入队
2.常见实现类
(1)线程不安全:
a.LinkedList:基于“双向链表”实现的队列
b.PriorityQueue:基于“堆”实现的优先队列
(2)线程安全:
BlockingQueue:阻塞队列
a.ArrayBlockingQueue(有界)
b.LinkedBlockingQueue(无界)