Java容器总结

List

ArrayList

底层为动态数组,因为它的增加、删除元素与size的变化不是原子操作,所以不是线程安全的

LinkedList

底层为双向链表,实现了List接口和Deque接口。不是线程安全的

Vector

创建了一个向量类的对象后,可以往其中随意插入不同类的对象。线程安全的,synchronized。替代方案:Collections.synchronizedList()

Map

HashMap

底层为哈希表,扩容时机和方式参考哈希表,不是线程安全。
JDK1.8中实现为哈希表+红黑树

LinkedHashMap

底层为哈希表和双向链表,保留元素的插入顺序,不是线程安全

TreeMap

红黑树,有序,非线程安全

Set

HashSet

底层为HashMap,不是线程安全

LinkedHashSet

底层为哈希表和双向链表,不是线程安全

TreeSet

基于TreeMap,不是线程安全

EnumSet

是一个抽象类,非线程安全

HashTable

不允许空键或值,线程安全,synchronized,遗留类,不应该使用

ConcurrentHashMap

HashTable的替代品,synchronized

你可能感兴趣的:(java,容器)