LinkedList、ArrayList、 Vector的区别和详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/py245164372/article/details/78136037

ArrayList:

1.数组队列,是基于动态数组的数据结构,实现了可变大小的数组,允许元素null。
2.每个ArrayList实例都有一个容量,ArrayList创建对象的时候,会有一个带有参数的构造器,而此参数就是ArrayList的长度,默认长度为10,当数据增加时,
原来的长度不够用时,ArrayList就会实现自增长,将会创建一个更大的数组,数组长度为newLength = oldLength + oldLength/2;
然后将之前数组的元素拷贝到新的数组中。
3.ArrayList是基于数组实现的,而数组是一块连续的内存空间,如果在数组的任意位置插入元素,必然导致在该位置后的所有元素需要重新排列,
因此,
增删改的效率相对会比较低,对于增删改的时间是和数组的大小成正比的。

4.ArrayList对于随机查询效率高。

5.ArrayList非同步的。

6.ArrayList支持序列化。

l     LinkedList:

1.基于链表的数据结构,不需要维护数组容量的大小。

2.元素的增删改都会分配或操作内部每个元素对应的每个Entry对象,时间消耗是固定的所以效率相对较高。

       3.但是linkedlist查询效率不高,因为对LinkedList进行随机访问时,总会进行一次列表的遍历操作,导致耗时很久,需要移动指针,所以对一个LinkedList做随机访问所消耗的时间与这个list的大小是成比例的。

4.也是非同步的。

Vector

1.同步的,线程安全,方法函数都是synchronized的。
2.Vector默认初始容量为10,每次增长为原长度的一倍。
3.不支持序列化。
4.ArrayList有3个构造函数,而Vector有4个构造函数。

猜你喜欢

转载自blog.csdn.net/py245164372/article/details/78136037