List 集合的选择
ArrayList和Vector的比较
底层结构 | 版本 | 线程安全(同步),效率c | 扩容倍数 | |
---|---|---|---|---|
ArrayList | 可变数组 | jdk1.2 | 线程不安全,效率高 | 如果有参构造1.5倍扩容;如果是无参 1.第一次10 2.从第二次开始按1.5倍扩容 |
Vector | 可变数组 | jdk1.0 | 线程安全,效率不高 | 如果是有参构造2倍扩容;如果是无参,默认是10,容量满后,就按2倍扩容 |
ArrayList和LinkedList的比较
底层结构 | 线程安全 | 增删的效率 | 改查的效率 | |
---|---|---|---|---|
ArrayList | 可变数组 | 线程不安全 | 较低;数组扩容 | 较高 |
LinkedList | 双向链表 | 线程不安全 | 较高;通过链表追加 | 较低 |
如何选择ArrayList和LinkedList
-
如果我们改查的操作多,选择ArrayList
-
如果我们增删的操作多,选择LinkedList
-
一般来说,在程序实际开发中,80% - 90% 都是查询,因此大部分情况下会选择ArrayList
-
在一个项目中,根据业务灵活选择,也可能这样,一个模块使用的是ArrayList,另外一个模块使用的是LinkedList