这是根据参考https://github.com/Snailclimb/JavaGuide和https://www.pdai.tech/总结的
仅做了简单总结,方便自我背诵。详情请看上述网址的大神分析
Java集合分为:Collection和Map
List:有序,可重复
ArrayList:
①底层Object[]数组
②线程不安全
③JDK1.8前默认容量为10,JDK1.8后,默认为0,首次添加元素后容量为10
④扩容1.5n
⑤根据元素位置决定插入和删除的效率;查找元素效率较高
Vector:
①底层Object[]数组
②线程安全
③默认容量为10
④扩容2n
LinkedList:
①底层双向链表
②实现List接口和Deque
③线程不安全
④插入和删除效率较高
CopyOnWriteArrayList:
①JUC包下的线程安全的ArrayList
②读时复制
Set:无序,不可重复
HashSet:
①底层HashMap实现
②线程不安全
③可存null值
LinkedHashSet:
①继承HashSet
②线程不安全
③按添加顺序遍历
TreeSet:
①底层红黑树
②对TreeMap的包装
CopyOnWriteArraySet:
①JUC包下的线程安全的Set
②底层使用到CopyOnWriteArrayList
Map:key-value键值对
HashMap:
①线程不安全
②可存一个key为null的元素
③初始容量为16
④扩容2n
HashTable:
①线程安全
②key和value都不能为null
③初始容量为11
④扩容2n+1
LinkedHashMap:
①继承HashMap
②采用双向链表连接所有entry
TreeMap:
①底层红黑树
ConcurrentHashMap:
①JUC包下的线程安全的HashMap
②jdk1.7和1.8有区别