1.集合框架
1.1集合框架概览
1.2四个主要接口区别
List:存储的元素是有序的,可重复的
Set:存储的元素是无序的,不可重复的
Queue;存储的数据是有序的,可重复的(先进先出)
Map:使用键值对存储,Key是无序的,不可重复的,Value是无序的,可重复的,如同数学上的函数y=f(x),x是相当于key不可重复的,y相当于value可重复的
无序性是指存储的数据在底层数组中并非按照数组索引的顺序添加
2.Collection接口
2.1List接口
ArrayList:底层使用Object[]存储,适合用于频繁的查找,线程不安全
Vector:底层也是Object[],线程安全
会发现Vector的方法基本都有使用synchronized关键字
LinkedList:底层是使用双向链表,线程不安全
Node类存储着两个引用next(下一个结点),prev(上一个结点)
2.2Set接口
HashSet线程不安全,底层使用HashMap实现
LinkedHashSet线程不安全,基于链表和哈希表实现,元素插入和取出顺序满足FIFO
TreeSet底层是红黑树,元素有序
2.3Queue接口
Queue是单端队列,遵循FIFO,一端插入另一端取出
Deque是双端队列,在两端均可插入或删除元素
ArrayDeque基于可变数组和双指针实现
3Map接口
HashMap,线程不安全,基于HashTable实现
treeMap,基于红黑树实现,线程不安全
ConcurrentHashMap线程安全