在 Java 中遍歷連結列表
-
在 Java 中使用
for
迴圈遍歷連結列表 -
使用 Java 中增強的
for
迴圈遍歷連結列表 -
使用
while
迴圈遍歷連結列表 -
使用 Java 中的
Iterator
類迭代連結列表 -
使用 Java 8
Stream
迭代連結列表
連結串列是資料元素的線性有序集合。元素的排列在儲存器中無處不在或隨機的位置。連結串列資料結構是使用節點連線的。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
物件。這些是 Array
、ArrayList
、LinkedList
等等。我們稱其為迭代器,因為它遍歷集合物件。應該使用 Iterator 類中的方法來迭代 Collections
物件。
我們使用 iterator()
方法來獲取任何集合的 Iterator
。hasNext
方法檢查列表中是否包含更多元素。如果迭代中存在更多元素,則返回 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 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