ArrayList、LinkedList和Vector三者区别与联系

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/StemQ/article/details/66476265

一.ArrayList

特性:

1.基于动态数组的数据结构,初始容量为10,容量不足时,在缺省的情况下自动增长原来的50%。

2.非线程安全。

3.允许Null元素。

二.LinkedList

特性:

1.底层的数据结构是双链表。

2.非线程安全。

3.允许Null元素。

三.Vector

特性:

1.基于动态数组的数据结构,初始容量为10,容量不足时,在缺省的情况下自动增长原来的一倍。

2.同步线程安全。

3.允许Null元素。

四.总结:

1.如果是非线程安全的话,可以使用ArrayList或LinkedList。这样可以节省同步耗费的开销。

2.如果只是查找特定位置的元素或者在集合的末尾插入、删除对象,可以使用ArrayList或Vector,他们开销的时间是一样的,可以用O(1)表示。如果在集合的其他位置插入、删除对象,他们开销的时间会呈线性的增长,可以用O(n-i)表示。因为ArrayList和Vector都是数组实现,所以在集合中间插入和删除需要移动后面所有的元素。LinkedList在插入、删除集合任何位置的元素所开销的时间都是一样的,可以用O(1)表示。因为LinkedList是用链表实现,在内存里是离散的(不连续),里面的每一个元素都有下一个元素引用,所以不支持高效的随机元素访问,查询的时候比ArrayList和Vector慢,开销时间为O(i),ArrayList和Vector查询开销的时间为O(1)。

备注:n表示集合元素的个数;i表示元素插入、删除和查询的索引位置。

猜你喜欢

转载自blog.csdn.net/StemQ/article/details/66476265