ArrayList, LinkedList与向量三者的区别是什么

介绍

这篇文章运用简单易懂的例子给大家介绍ArrayList, LinkedList与向量三者的区别是什么,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强> 1,从存储数据结构分析

ArrayList:数组

向量:数组

LinkedList:双向链表

数组:可以根据下标快速查找,所以大部分情况下,查询快。

但是如果要进行增删操作的时候,会需要移动修改元素后面的所有元素,所以增删的开销比较大,数组的对增删操作的执行效率低。而采用数组作为数据存储结构的ArrayList,向量也存在这些特性,查询速度快(可以根据下标直接取,比迭代查找更快),增删慢。

链表:增加和删除元素方便,增加或删除一个元素,仅需处理结点间的引用即可。就像人手拉手连成一排,要增加或删除某个人只要附近的两个人换一个人牵的手,对已经牵好手的人没影响。无论在哪里换人耗费的资源和时间都是一样的。

但是查询不方便,需要一个个对比,无法根据下标直接查找。而采用链表结构存储的LinkedList也有这些特性,增删方便,查询慢(指的是随机查询,不是顺序查询)。

<强> 2,从继承上分析

 ArrayList, LinkedList与向量三者的区别是什么

它们都实现了列表接口,也就是说都实现了(int位置),删除(int位置)等“根据索引值来获取,删除节点的函数”。

(

数组结构根据下标取值很容易,LinkedList双向列表的实现也比较简单,通过计数索引值实现,从链表长度的1/2开始查,找下标大了就从表头开始找,小了就从表尾开始找。

<强> 3,从并发安全上分析

向量:线程安全

ArrayList:非线程安全

LinkedList:非线程安全

<强> 4,数据增长分析

向量:缺省的情况下,增长为原数组长度的一倍。说到缺省,说明他其实是可以自主设置初始化大小的。

ArrayList:自动增长原数组的50%。

关于ArrayList, LinkedList与向量三者的区别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

ArrayList, LinkedList与向量三者的区别是什么