Java中ArrayList和LinkedList的区别

Java中ArrayList和LinkedList的区别,第1张

在Java中虽然ArrayList和LinkedList都实现了List接口,但是其底层原理不相同。

ArrayList的底层是一个数组,LinkedList的底层是链表。

ArrayList在增加和删除元素时,时间复杂度是O(N)。

LinkedList则是O(1),因为LinkedList的底层是一个双向链表,拥有头节点和尾节点,可以通过头节点和尾节点直接添加元素。也可以直接通过索引来删除元素。但是在指定位置添加元素时候,时间复杂度和ArrayList的时间复杂度相同为O(N)。

虽然LikedList在增删查改这方面优于ArrayList,但是两者的访问速度则是ArrayList比LinkedList快。因为ArrayList的底层是数组,数组的访问速度优于链表的访问速度。

ArrayList在扩容的时候需要申请新的空间,拷贝原数组的数据,释放旧空间。会有不小的消耗。

当你数组只有100的空间时,满了数组扩充到200,此时你只需要存储102个数据,就会浪费98个空间,造成空间的剩余。但是对于链表来说,我们存一个数据,才开辟一个空间给我们存储数据,就避免了空间上的浪费。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/791324.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存