如果我在 java 中的链表上使用 for-each 循环,是否保证我会按照元素在列表中出现的顺序迭代它们?
原文由 tomermes 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果我在 java 中的链表上使用 for-each 循环,是否保证我会按照元素在列表中出现的顺序迭代它们?
原文由 tomermes 发布,翻译遵循 CC BY-SA 4.0 许可协议
我找到了 5 种在 Java 中迭代链表的主要方法(包括 Java 8 方法):
For循环
LinkedList<String> linkedList = new LinkedList<>();
System.out.println("==> For Loop Example.");
for (int i = 0; i < linkedList.size(); i++) {
System.out.println(linkedList.get(i));
}
增强for循环
for (String temp : linkedList) {
System.out.println(temp);
}
while 循环
int i = 0;
while (i < linkedList.size()) {
System.out.println(linkedList.get(i));
i++;
}
迭代器
Iterator<String> iterator = linkedList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
收集流()实用程序(Java 8)
linkedList.forEach((temp) -> {
System.out.println(temp);
});
需要指出的是 For Loop 或 While Loop 的运行时间是 O(n square) 因为 get(i)
操作需要 O(n) 时间( 详见 this )。其他 3 种方式需要线性时间并且性能更好。
原文由 Gherbi Hicham 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
链表保证按顺序执行。
从 文档
iterator() 以正确的顺序返回此列表中元素的迭代器。