簡體   English   中英

java - 迭代一個鏈表

[英]java - iterating a linked list

如果我在 java 中的鏈表上使用 for-each 循環,是否可以保證我會按照元素出現在列表中的順序對元素進行迭代?

我發現了在 Java 中迭代鏈表的 5 種主要方法(包括 Java 8 方法):

  1. For循環
  2. 增強的 For 循環
  3. While 循環
  4. 迭代器
  5. 集合的 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 循環

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) 時間( 詳情請看這里)。 其他 3 種方式需要線性時間並且性能更好。

鏈表保證按順序執行。

文檔

有序集合(也稱為序列)。 此界面的用戶可以精確控制每個元素在列表中的插入位置。 用戶可以通過它們的整數索引(在列表中的位置)訪問元素,並在列表中搜索元素。

iterator()以適當的順序返回此列表中元素的迭代器。

正如 Linkedlist 的定義所說,它是一個序列,您可以保證按順序獲取元素。

例如:

import java.util.LinkedList;

public class ForEachDemonstrater {
  public static void main(String args[]) {
    LinkedList<Character> pl = new LinkedList<Character>();
    pl.add('j');
    pl.add('a');
    pl.add('v');
    pl.add('a');
    for (char s : pl)
      System.out.print(s+"->");
  }
}

鏈表確實保證順序。

, especially inside a sequential loop since it defeats the purpose of having a linked list and will be inefficient code.不要使用 ,尤其是在順序循環中,因為它違背了擁有鏈表的目的,並且代碼效率低下。

使用列表

    ListIterator<Object> iterator = myLinkedList.listIterator();
    while( iterator.hasNext()) {
        System.out.println(iterator.next());
    }

每個 java.util.List 實現都需要保留順序,因此您使用的是 ArrayList、LinkedList、Vector 等。它們中的每一個都是有序集合,並且每一個都保留插入順序(請參閱http://download.oracle .com/javase/1.4.2/docs/api/java/util/List.html )

iterate LinkedList by using iterator

LinkedList<String> linkedList = new LinkedList<String>();
linkedList.add(“Mumbai”);
linkedList.add(“Delhi”);
linkedList.add(“Noida”);
linkedList.add(“Gao”);
linkedList.add(“Patna”);

Iterator<String>  itr = linkedList.iterator();
 while (itr.hasNext()) {
 System.out.println(“Element is =”+itr.next());

 }

參考: Java 鏈表示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM