列表相关比较
ArrayList 和Vector
都是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,
都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快,插入数据慢。
-
线程安全问题:
vector是线程(Thread)同步(Synchronized)的,所以它是线程安全的,
而Arraylist是线程异步(ASynchronized)的,是不安全的。
如果不考虑到线程的安全因素,一般用Arraylist效率比较高。
-
元素个数和数组长度:
vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%。
如果在集合中使用数据量比较大的数据,用vector有一定的优势。
-
查询指定元素:
vector和arraylist使用的时间是相同的,都是O(1),这个时候使用vector和arraylist都可以。
-
移动元素问题:
而如果移动一个指定位置的数据花费的时间为O(n-i)n为总长度,
这个时候就应该考虑到使用Linkedlist,因为它移动一个指定位置的数据所花费的时间为O(1),而查询一个指定位置的数据时花费的时间为O(i)。LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!
【总】
| 增 | 删 | 改 | 查 | 线程 | |
| LinkedList | 快 | 快 | 快 | 不安全 | |
| ArrayList | 快 | 不安全 | |||
| Vector | 快 | 安全 |

浙公网安备 33010602011771号