栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么遍历列表比索引索引快?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么遍历列表比索引索引快?

在链接列表中,每个元素都有一个指向下一个元素的指针:

head -> item1 -> item2 -> item3 -> etc.

要访问

item3
,您可以清楚地看到您需要从头经过每个节点直到到达item3,因为您不能直接跳转。

因此,如果我想打印每个元素的值,请编写以下代码:

for(int i = 0; i < 4; i++) {    System.out.println(list.get(i));}

这是怎么回事:

head -> print headhead -> item1 -> print item1head -> item1 -> item2 -> print item2head -> item1 -> item2 -> item3 print item3

这是 非常低效的, 因为每次索引时,它都会从列表的开头重新开始并遍历每个项目。这意味着您的复杂性实际上

O(N^2)
只是遍历列表!

如果相反,我这样做:

for(String s: list) {    System.out.println(s);}

那么会发生什么:

head -> print head -> item1 -> print item1 -> item2 -> print item2 etc.

全部在一个遍历中,即

O(N)

现在,转到的另一种实现,

List
该实现
ArrayList
由一个简单数组支持。在这种情况下,上述两个遍历都是等效的,因为数组是连续的,因此它允许随机跳转到任意位置。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497502.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号