在Java中迭代列表的方法

1.簡介

遍歷列表的元素是程序中最常見的任務之一。

在本教程中,我們將回顧使用Java進行此操作的不同方法。我們將專注於按順序遍歷列表,儘管反向操作也很簡單。

2. for循環

首先,讓我們回顧一些for循環選項。

首先,為示例定義國家列表:

List<String> countries = Arrays.asList("Germany", "Panama", "Australia");

2.1。基本for循環

最常見的迭代流控制語句是基本的for循環。

for循環定義用分號分隔的三種類型的語句。第一條語句是初始化語句。第二個定義終止條件。最後一條語句是update子句。

在這裡,我們只是使用整數變量作為索引:

for (int i = 0; i < countries.size(); i++) {

 System.out.println(countries.get(i));

 }

在初始化中,我們必須聲明一個整數變量以指定起點。此變量通常充當列表索引。

終止條件是一個表達式,在求值後返回一個布爾值,一旦該表達式求值為false,則循環結束。

update子句用於修改索引變量的當前狀態,增加或減少它直到終止點。

2.2。增強for循環

增強的for循環是一個簡單的結構,使我們可以訪問列表的每個元素。它類似於基本的for循環,但更具可讀性和緊湊性。因此,它是遍歷列表的最常用形式之一。

請注意,增強的for循環比基本的for循環更簡單:

for (String country : countries) {

 System.out.println(country);

 }

3.迭代器

Iterator是一種設計模式,它為我們提供了遍歷數據結構的標準接口,而不必擔心內部表示形式。

這種遍歷數據結構的方式具有許多優點,其中我們可以強調,我們的代碼不依賴於實現。

因此,結構可以是二叉樹或雙向鍊錶,因為Iterator將我們從執行遍歷的方式中抽像出來。這樣,我們可以輕鬆替換代碼中的數據結構而不會出現令人討厭的問題。

3.1。 Iterator

在Java中, Iterator模式反映在java.util.Iterator類中。它廣泛用於Java CollectionsIterator有兩個關鍵方法,即hasNext()next()方法。

在這裡,我們演示兩種用法:

Iterator<String> countriesIterator = countries.iterator();



 while(countriesIterator.hasNext()) {

 System.out.println(countriesIterator.next());

 }

hasNext()方法檢查list中是否還有任何元素

next()方法返回迭代中的下一個元素

3.2。 ListIterator

ListIterator允許我們以向前或向後的順序遍曆元素列表。

使用ListIterator向前滾動列表遵循的機制類似於Iterator所使用的機制。這樣,我們可以使用next()方法將迭代器向前移動,並可以使用hasNext()方法找到列表的末尾。

如我們所見, ListIterator看起來與我們之前使用的Iterator非常相似:

ListIterator<String> listIterator = countries.listIterator();



 while(listIterator.hasNext()) {

 System.out.println(listIterator.next());

 }

4. forEach()

4.1。 Iterable.forEach()

從Java 8開始,我們可以使用forEach()方法遍歷list的元素。此方法在Iterable接口中定義,並且可以接受Lambda表達式作為參數。

語法非常簡單:

countries.forEach(System.out::println);

forEach函數之前,Java中的所有迭代器都處於活動狀態,也就是說,它們涉及一個for或while循環,該循環遍歷數據收集直到滿足特定條件。

通過在Iterable接口中引入forEach函數,所有實現Iterable類都添加了forEach函數。

4.2。 Stream.forEach()

我們還可以將值的集合轉換為Stream,並且可以訪問諸如forEach()map(),filter().

在這裡,我們演示了流的典型用法:

countries.stream().forEach((c) -> System.out.println(c));

5.結論

在本文中,我們展示了使用Java API遍歷列表元素的不同方法。其中,我們提到了for循環,增強的for循環, IteratorListIteratorforEach()方法(包含在Java 8中)。

此外,我們還展示瞭如何在Streams使用forEach()方法。

最後,本文中使用的所有代碼都可以在我們的Github存儲庫中找到