本篇从底层存储方式,数据扩容,增删查改方面进行比较。
ArrayList | LinkedList | Vector | |
底层存储方式 | 动态数组 | 双向链表 | 动态数组 |
扩容 | 1.5 | 2 | |
增、删元素 | 移动数据,比较慢 | 移动指针,快 | 移动数据,比较慢 |
随机访问 | 通过索引查找,快 | 移动指针查找,慢 | 通过索引查找,比较快 |
同步 | 否 | 是 | |
安全 | 否 | 否 | 是 |
所以,什么情况下应该选用哪种存储方式呢?
对数据的操作主要为索引或只在集合末端增加删除元素,选用ArrayList或Vector;
对数据的操作主要为指定位置的插入或删除元素时,使用LinkedList效率比较高;
在多线程中使用Vector,因为它比较安全。