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
ArrayListLinkedList和Vector三者区别与联系
ArrayListLinkedList和Vector三者区别与联系