Java 集合框架
List
ArrayList,底层Object数组,相关方法add,remove
Vector,底层Object数组,线程安全,使用 synchronized
关键字进行同步处理
Stack,继承自Vector,是一个后进先出的栈,使用 synchronized
关键字进行同步处理,相关方法push,pop,peek
LinkedList,底层双向链表
Set
HashSet,基于HashMap实现,底层采用 HashMap来保存元素
LinkedHashSet,基于LinkedHashMap实现
TreeSet,有序,唯一,基于红黑树
Queue
Queue,单端队列,插入队尾,add/offer,删除队首remove/poll,获取队首element(),peek()
Deque,双端队列,addFirst/offerFirst,remove/poll,get/peek,push/pop模拟栈。
PriorityQueue,优先队列,Object数组实现小顶堆
eg:自定义排序实现最大/最小堆
PriorityQueue<int[]> maxHeap = new PriorityQueue<int[]>(new Comparator<int[]>(){
public int compare(int[] pair1, int[] pair2) {
return pair1[0] != pair2[0] ? pair2[0] - pair1[0] : pair2[1] - pair1[1];
}
});
DelayQueue:PriorityQueue
ArrayDeque:可扩容动态双向数组
Map
HashMap,数组+链表,1.8后链表改为红黑树(数组长度大于64,链表长度大于8)
LinkedHashMap,在HashMap的基础上,增加了一条双向链表
HashTable,数组+链表,线程安全,Synchronized保证
TreeMap,红黑树
ConcurrentHashMap,线程安全,1.7之前segment数组+链表,1.8之后node数组+红黑树