ArrayList
它在集合的末尾删除或添加元素所用的时间是一致的,但是在列表中间的部分添加或删除时所用时间就会大大增加。但是它在根据索引查找元素的时候速度很快。
LinkedList
它在插入、删除集合中任何位置的元素所花费的时间都是一样的,但是它根据索引查询一个元素的时候却比较慢。
Vector
基于数组,大小可变(数组扩容)。
ArrayList和LinkedList比较
底层结构 | 增删的效率 | 改查的效率 | |
---|---|---|---|
ArrayList | 可变数组 | 较低,数组扩容 | 较高 |
LinkedList | 双向链表 | 较高,通过链表追加 | 较低 |
ArraryList和Vector区别
底层结构 | 版本 | 线程同步效率 | 扩容倍数 | |
---|---|---|---|---|
ArraryList | 可变数组 | jdk1.2 | 不安全,效率高 | 如果使用有参构造器1.5倍;如果是无参构造器:1.第一次扩容10,第二次开始按照1.5倍 |
Vector | 可变数组Object[] | jdk1.0 | 安全,效率低 | 如果是无参,默认是10,按两倍扩容 |