自Java 8發布以來已經有一段時間了。在此版本中,他們改進了一些現有的API,並增加了一些新函數。其中之一是java.lang.Iterable接口中的forEach方法。
每當我們需要遍曆一個集合時,我們都必須創建一個Iterator來迭代該集合,然後我們可以將業務邏輯包含在該集合中每個元素的循環中。如果未正確實現,我們可能會遇到ConcurrentModificationException。
Iterable接口中forEach方法的實現是:
default void forEach(Consumer action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } }
參數:此方法采取類型為java.util.function.Consumer的參數操作,該參數操作表示要對每個元素執行的操作。
返回值:forEach的返回類型為void。因此,它不返回任何內容。
異常:如果輸入操作為null,則拋出NullPointerException。
示例1:程序使用迭代器迭代String列表。
// Java program to demonstrate
// forEach() method of Iterable interface
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
public class ForEachExample {
public static void main(String[] args)
{
List<String> data = new ArrayList<>();
data.add("New Delhi");
data.add("New York");
data.add("Mumbai");
data.add("London");
Iterator<String> itr = data.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
// data.remove(itr.next());
// this line can introduce you to
// java.util.ConcurrentModificationException.
}
}
}
New Delhi New York Mumbai London
示例2:用於在包含城市列表的列表上演示forEach()方法的程序。
// Java program to demonstrate
// forEach() method of Iterable interface
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
public class ForEachExample {
public static void main(String[] args)
{
List<String> data = new ArrayList<>();
data.add("New Delhi");
data.add("New York");
data.add("Mumbai");
data.add("London");
data.forEach(new Consumer<String>() {
@Override
public void accept(String t)
{
System.out.println(t);
}
});
}
}
New Delhi New York Mumbai London
在上麵的程序中,我們創建了一個包含4個元素的字符串列表,然後使用forEach方法遍曆該列表。如前所述,forEach方法將Consumer對象作為輸入,我們創建了Consumer接口的匿名內部類實現,並覆蓋了accept方法。在此示例中,我們將業務邏輯保留在匿名內部類內,並且我們無法重用它。
示例3:在此程序中,我們將分別演示Consumer接口的實現,以便我們可以重用它。讓我們創建一個CityConsumer類,該類實現Consumer接口並覆蓋其accept方法。
// Java program to demonstrate
// forEach() method of Iterable interface
import java.util.*;
import java.util.function.Consumer;
class CityConsumer implements Consumer<String> {
@Override
public void accept(String t)
{
System.out.println(t);
}
}
// Now we can use the CityConsumer
// with forEach method by just creating
// an object of CityConsumer class as below.
public class ForEachExample {
public static void main(String[] args)
{
List<String> data = new ArrayList<>();
data.add("New Delhi");
data.add("New York");
data.add("Mumbai");
data.add("London");
// create an object of CityConsumer
// and pass it to forEach method
CityConsumer cityConsumer = new CityConsumer();
data.forEach(cityConsumer);
}
}
New Delhi New York Mumbai London
參考: https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html
相關用法
- Java LinkedBlockingDeque forEach()用法及代碼示例
- Java CopyOnWriteArraySet forEach()用法及代碼示例
- Java LinkedTransferQueue forEach()用法及代碼示例
- Java Stream forEach()用法及代碼示例
- Java HashTable forEach()用法及代碼示例
- Java CopyOnWriteArrayList forEach()用法及代碼示例
- Java HashMap forEach(BiConsumer)用法及代碼示例
- Java Properties forEach(BiConsumer)用法及代碼示例
- Java Vector forEach()用法及代碼示例
- Java ArrayList forEach()用法及代碼示例
- Java ArrayDeque forEach()用法及代碼示例
- Java IntStream forEach()用法及代碼示例
- Java DoubleStream forEach()用法及代碼示例
- Java LongStream forEach()用法及代碼示例
- Java Iterator轉Iterable用法及代碼示例
注:本文由純淨天空篩選整理自go2ksr大神的英文原創作品 Iterable forEach() method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。