Java容器总结

怎甘沉沦 提交于 2019-12-20 15:47:52

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!