ArrayListLinkedList和Vector三者区别与联系

Posted 享叔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArrayListLinkedList和Vector三者区别与联系相关的知识,希望对你有一定的参考价值。

一.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表示元素插入、删除和查询的索引位置。

以上是关于ArrayListLinkedList和Vector三者区别与联系的主要内容,如果未能解决你的问题,请参考以下文章

阿里面试常见题:ArrayListLinkedList和CopyOnWriteArrayList

List接口,ArrayListLinkedList

ArrayListLinkedList和Vector三者区别与联系

ArrayListLinkedList和Vector三者区别与联系

面试:在面试中关于List(ArrayListLinkedList)集合会怎么问呢?你该如何回答呢?

线性表之何时使用ArrayListLinkedList?