java - 迭代链表

2022-09-01 11:10:05

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


答案 1

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

  1. For Loop
  2. 增强的 For 循环
  3. 同时循环
  4. 迭 代
  5. Collections's stream() util (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 (String temp : linkedList) {
    System.out.println(temp);
}

同时循环

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()); 
}

collection stream() util (Java 8)

linkedList.forEach((temp) -> {
    System.out.println(temp);
});

应该指出的一件事是,For LoopWhile Loop的运行时间是O(n平方),因为操作需要O(n)时间(有关详细信息,请参阅此处)。其他 3 种方式采用线性时间,性能更好。get(i)


答案 2

链接列表保证按顺序运行。

文档中

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

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


推荐