java - 迭代链表

新手上路,请多包涵

如果我在 java 中的链表上使用 for-each 循环,是否保证我会按照元素在列表中出现的顺序迭代它们?

原文由 tomermes 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 394
2 个回答

链表保证按顺序执行。

文档

有序集合(也称为序列)。该界面的用户可以精确控制每个元素在列表中的插入位置。用户可以通过整数索引(在列表中的位置)访问元素,并在列表中搜索元素。

iterator() 以正确的顺序返回此列表中元素的迭代器。

原文由 Dave G 发布,翻译遵循 CC BY-SA 2.5 许可协议

我找到了 5 种在 Java 中迭代链表的主要方法(包括 Java 8 方法):

  1. For 循环
  2. 增强型循环
  3. 循环
  4. 迭代器
  5. 集合的 stream() 实用程序 (Java8)

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 LoopWhile Loop 的运行时间是 O(n square) 因为 get(i) 操作需要 O(n) 时间( 详见 this )。其他 3 种方式需要线性时间并且性能更好。

原文由 Gherbi Hicham 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题