目录
Collection 接口用于表示单例集合,主要包括三个子接口:List、Set、Queue
List集合:
List是有序的,可重复的集合。
主要实现类:
ArrayList:基于动态数组实现,提供随机访问和插入性能;
LinkedList:基于双向链表实现,适合频繁插入和删除操作;
上面这两个线程不安全,下面的线程安全
Vector:类似 ArrayList,基于动态数组实现,使用synchronized 实现线程安全,性能略低;
Stack:Vector 类的子类,提供了 FILO 先进后出的栈结构;
CopyOnWriteArrayList:基于动态数组实现,使用ReentrantLock 实现线程安全;
ArrayList:
数据结构
数组:Object[ ] elementData
使用场景
查找、遍历效率高,插入、删除效率低
扩容方式:
初始化:
无参构造方法,数组的初始化容量为0,添加第一个元素时,数组容量扩容为10
有参构造方法,数组按指定容量初始化
容量不足时:
按照数组现有容量的1.5倍扩容
LinkedList:
数据结构
链表:双向链表
使用场景
插入、删除效率高,查找遍历效率低
扩容方式
链表动态扩容,每添加一个节点,链表动态扩容一个元素空间
Vector:
数据结构
数组:Object[ ] elementData
扩容方式
初始化:
无参构造方法,数组的初始化容量为10
有参构造方法,数组按指定容量初始化容量不足时按照数组现有容量的2倍或指定容量值(capacityIncrement)进行扩容
线程安全
通过“synchronized”同步锁实现特点:先进后出FILO or 后进先出LIFO链表动态扩容,每添加一个节点,链表动态扩容一个元素空间
Stack:
Vector类的子类,数据结构扩容方式同Vector
特点:先进后出FILO or 后进先出LIFO
CopyOnWriteArrayList:
数据结构
数组:Object[]
array线程安全
通过“ReentrantLock”锁实现
CopyOnWrite:"写入"操作时,先进行数组复制,然后在新数组中进行写入操作,然后替换;允许读写同时进行;
Set集合:
Set是不允许重复元素的集合。
主要实现类包括:
HashSet:基于 HashMap 实现,元素唯一,无序;
LinkedHashSet: HashSet 的子类,基于LinkedHashMap实现,元素唯一且有序,同时保持了哈希表的性
TreeSet :基于 TreeMap 实现,元素唯一,自动排序或按照自定义规则排序;
HashSet:
数据结构HashMap
LinkedHashSet
特点
有序
特点
无序
特点
自动排序数据结构TreeMap
LinkedHashSet:
数据结构LinkedHashMap
TreeSet :
数据结构TreeMap
Queue集合:
Queue是用于对元素进行先进先出(FIFO)操作的队列集合;
主要实现包括:
线程不安全
LinkedList基于“双向链表”实现的队列
PriorityQueue基于“堆”实现的优先队列
线程安全
BlockingQueue 阻塞队列:LinkedBlockingQueue(无界)、ArrayBlockingQueue(有界)