java - 迭代一个链表

标签 java linked-list

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

最佳答案

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

  1. For 循环
  2. 增强的 For 循环
  3. While 循环
  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) 时间(see this for details)。其他 3 种方式需要线性时间并且性能更好。

关于java - 迭代一个链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4767615/

相关文章:

c - 为什么退出此函数后传递给指针参数的指针变量的值没有改变?

c++ - 如何从 C++ 中的结构数组中删除一个项目?

java - Map.merge ..非静态方法不能从静态上下文中引用

java - 除了已部署的 WAR,AspectJ CTW 编织在任何地方都有效?

java - IBM Websphere 8.5.5在Servlet 3.0中使用数据源4.0版本

c - 一个函数实现,用于剪切链接列表的一部分并将其附加到列表的末尾

c - 节点已插入,但输入的第一个节点已从列表中删除

c - 将新节点链接到 c 中的链接列表的问题

java - 简单的java套接字和线程程序的问题

java - bson 无法转换为 DBObject