为什么ArrayList的插入删除要比LinkedList的效率低?

发布于 2022-09-07 21:25:48 字数 231 浏览 32 评论 0

ArrayList是基于数组的,删除的时候,获取位置是O(1),删除补位是O(n)。
LinkedList是基于链表的,删除的时候,获取位置是O(n),删除是O(1)。
插入的操作同理。
这么看并没有什么区别啊,《Java数据结构与算法》里说用Iterator就可以解决LinkedList删除操作的inefficient问题。

为什么LinkedList更高效?Iterator为什么比顺序遍历链表要节省时间?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

相思碎 2022-09-14 21:25:48

首先要明确一点:ArrayList用for循环遍历比iterator迭代器遍历快,LinkedList用iterator迭代器遍历比for循环遍历快。
至于Iterator为什么比顺序遍历链表要节省时间,我的理解是,由于arrayList基于数组,下标明确,使用for循环的时候,get(i)效率很高;
而linkedList基于链表,get(i)复杂度是O(n),加上循环的次数就是O(n^2),但是用iterator.next()则不需要下标,只需要算上循环的复杂度就可以了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文