Java集合系列——List

来源:互联网 发布:知乎哲理段落 编辑:程序博客网 时间:2024/06/07 23:21

List类图

待补充

ArrayList

使用数组,在容量不足时会Arrays.copyOf获取更大容量的数组。
默认初始10,扩容1/2
顺序、随机访问效率高,插入/删除效率低
fail-fast实现,非线程安全

LinkedList

双向链表实现,自带表头
顺序访问效率高,随机效率低(由于是双向链表,随机访问时根据索引值判断从头或尾开始查找),插入/删除效率高
支持deque借口,可用过队列
fail-fast实现,非线程安全

Vector

结构同ArrayList
默认初始为10,扩容1倍
线程安全,读写均是强一致性,通过 synchronized修饰相关方法,利用了对象锁。

Stack

继承vector,提供栈的操作方法

CopyOnWriteArrayList

数据结构等同于ArrayList
写时复制,ReentrantLock保证写时强一致性,每次写时,扩容大小正好容纳新的元素,不会有多余的容量。
读时弱一致性,读的可能老数据
适用于读多写少的并发场景,比如黑名单、白名单等等,并最好使用批量插入的高效方法。

原创粉丝点击