`

ArrayList和LinkedList的区别

 
阅读更多
ArrayList看做是一个大小长度可变的数组来使用,一般情况也常用这个做查询作,ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦。

LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引  但是缺点就是查找非常麻烦 要丛第一个索引开始。LinkedList呢 他其实是一种链表形式的容器,插入删除很方便。

ArrayList和LinkedList在性能上各 有优缺点,都有各自所适用的地方,总的说来可以描述如下:
     1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对 ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。
     2.在ArrayList的 中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。
     3.LinkedList不 支持高效的随机元素访问。
     4.ArrayList的空 间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间
     可以这样说:当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

对于普通的容器操作(增删改查),用ArrayList足够了;如果新增和删除比较频繁建议还是使用LinkedList。

以下是他们大体的图形:

ArrayList:
【】【】【】【】【】【】【】【】
他就是一个数组的形状;
LinkedList:
【】
_【】
__【】
___【】
他就是一个链表形状:从这个图中你也应该可以看出为什么他删除,添加插入比较方便了吧
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics