在 Java 中遍歷連結列表

Rashmi Patidar 2023年10月12日
  1. 在 Java 中使用 for 迴圈遍歷連結列表
  2. 使用 Java 中增強的 for 迴圈遍歷連結列表
  3. 使用 while 迴圈遍歷連結列表
  4. 使用 Java 中的 Iterator 類迭代連結列表
  5. 使用 Java 8 Stream 迭代連結列表
在 Java 中遍歷連結列表

連結串列是資料元素的線性有序集合。元素的排列在儲存器中無處不在或隨機的位置。連結串列資料結構是使用節點連線的。Node 保留資料欄位和引用連結,它們是序列中下一個元素的儲存位置。

我們將連結列表元素儲存在不連續的記憶體位置中,最後一個節點包含一個指向空引用的指標。

有很多方法可以迴圈訪問連結串列。這是下面提到的幾種方法。

在 Java 中使用 for 迴圈遍歷連結列表

在下面的程式碼示例中,使用 new 關鍵字例項化了 LinkedList 類。LinkedList 類的 add() 方法將元素新增到列表中。add 方法將指定的元素追加到此列表的末尾。此方法等效於 addLast 方法。當元素成功新增到列表中時,該方法返回 true

建立列表後,我們使用 for 迴圈對其進行迭代。在下面的程式碼中,int i=0 是計數器變數的例項。使用指示變數應小於列表大小的條件。列表的大小是使用 size() 方法計算的。最後,變數的值增加一。這個完整的過程將一直執行,直到變數值大於列表的大小為止。

package linkedList;

import java.util.LinkedList;

public class IterateLinkedListUsingForLoop {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    System.out.println("Iterating the list using for-loop");
    for (int i = 0; i < list.size(); i++) {
      System.out.println(list.get(i));
    }
  }
}

上面的程式生成如下所示的輸出。

Iterating the list using for-loop
First
Second

使用 Java 中增強的 for 迴圈遍歷連結列表

增強的 for 迴圈也稱為 for-each 迴圈,是 for 迴圈的一種表現形式。

在下面的程式碼中,我們應該例項化一個連結串列物件。然後應向其中新增一些元素(例如 String 物件)。現在進行迭代,在這種情況下,我們將使用 for-each

package linkedList;

import java.util.LinkedList;

public class IteratingLinkedListUsingForEach {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    for (String temp : list) {
      System.out.println(temp);
    }
  }
}

該程式的輸出與第一個程式中的輸出相同。

使用 while 迴圈遍歷連結列表

在所有提到的方式中,例項化和向列表過程新增元素都將相似。

在下面的示例中,計數器變數值在 while 迴圈外例項化為 0。while 迴圈語法沒有例項化的地方。現在應用條件。這將檢查變數是否小於給定列表的大小。它將返回 true,並且將執行 println() 函式。在那之後,我們應該增加計數器變數。該過程將重複進行,直到變數變得大於列表大小為止。

package linkedList;

public class IteratingLinkedListUsingWhileLoop {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    int i = 0;
    while (i < list.size()) {
      System.out.println(list.get(i));
      i++;
    }
  }
}

使用 Java 中的 Iterator 類迭代連結列表

Iterator 是一個類,用於迴圈 Collections 物件。這些是 ArrayArrayListLinkedList 等等。我們稱其為迭代器,因為它遍歷集合物件。應該使用 Iterator 類中的方法來迭代 Collections 物件。

我們使用 iterator() 方法來獲取任何集合的 IteratorhasNext 方法檢查列表中是否包含更多元素。如果迭代中存在更多元素,則返回 true

next 方法獲取迴圈中的下一個元素。它返回迭代中的下一個當前物件,如果列表中不存在任何元素,則丟擲 NoSuchElementException

下面的程式碼演示了 Iterator 類及其方法。

package linkedList;

public class IteratingLinkedListUsingIterator {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
      System.out.println(iterator.next());
    }
  }
}

使用 Java 8 Stream 迭代連結列表

一個 stream 總是在一個 Collection 物件上形成。在下面的程式中,我們使用 stream 方法。函式被應用到流函式鏈上。forEach終端操作。這意味著終端功能後不能執行任何操作。它需要一個 consumer 流,並且此流不發出元素而是消耗它們。

下面的程式碼顯示了使用 Java 8 流和它們的函式來迭代列表的情況。

package linkedList;

public class IteratingLinkedListUsingStreams {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    list.stream().forEach((element) -> { System.out.println(element); });
  }
}
作者: Rashmi Patidar
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

相關文章 - Java List