2020年JAVA面试208题

019_Java中ArrayList和LinkedList的区别


Listen Later



ArrayList和LinkedList的区别


LinkedList和ArrayList的区别主要来自于他们俩的数据结构不同

ArrayList是基于数组实现的,LinkedList是基于双链表实现的

ArrayList是基于数组的数据结构,数组在内存中存储数据的空间是连续的,可以通过下角标直接访问数组中的元素,因此在随机访问集合元素时有较好的性能。

ArrayList获取数据的时间复杂度是O(1),但是要插入、删除数据的开销很大,因为要将插入位置之后的所有元素进行后移操作。例如买票时,有人插队,则插队的位置后面的所有人都要后移,消耗就比较大。

相比于ArrayList,LinkedList的随机访问元素时性能较差,因为双向链表在内存中存储数据不是连续的;但在插入,删除操作是很快的,那么这个链表呢,就好比幼儿园小朋友手拉手围成一个大圈儿做游戏,这时候来了一个新的小朋友要加入,只需要任意2个小朋友松开手,这个新的小朋友加入即可,其他小朋友不用动。所以性能相对ArrayList要好很多

因为LinkedList它是链表操作,所以在插入或删除的时间复杂度仅为O(1) 。


使用场景

如果应用程序对数据有较多的随机访问,首选肯定是ArrayList集合;

如果应用程序有更多的插入或者删除操作,较少的数据读取,LinkedList对象要优于ArrayList对象;

不过ArrayList的插入,删除操作也不一定比LinkedList慢,如果在集合靠近末尾的地方插入,那么ArrayList只需要移动较少的数据,而LinkedList则需要一直查找到列表尾部,反而耗费较多时间,这时ArrayList就比LinkedList效率要高。




...more
View all episodesView all episodes
Download on the App Store

2020年JAVA面试208题By 小崔爱读书


More shows like 2020年JAVA面试208题

View all
What's Next|科技早知道 by 声动活泼

What's Next|科技早知道

178 Listeners

声动早咖啡 by 声动活泼

声动早咖啡

264 Listeners

半拿铁 | 商业沉浮录 by 潇磊&刘飞

半拿铁 | 商业沉浮录

289 Listeners

天真不天真 by 杨天真本真

天真不天真

262 Listeners