Java中的可迭代 forEach() 方法及示例
Java 8 发布已经有一段时间了。随着该版本的发布,他们改进了一些现有的 API 并添加了一些新功能。其中之一是Java.lang.Iterable接口中的 forEach 方法。
每当我们需要遍历集合时,我们必须创建一个迭代器来遍历集合,然后我们可以将我们的业务逻辑放在一个循环中,用于集合中的每个元素。如果没有正确实现,我们可能会遇到ConcurrentModificationException 。
Iterable接口中forEach方法的实现是:
default void forEach(Consumer action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
参数:此方法采用Java.util 类型的参数操作。函数.Consumer 表示要为每个元素执行的操作。
返回: forEach 的返回类型为 void。因此它不返回任何东西。
异常:如果输入操作为空,则抛出NullPointerException 。
程序 1:使用迭代器迭代字符串列表的程序。
// 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 data = new ArrayList<>();
data.add("New Delhi");
data.add("New York");
data.add("Mumbai");
data.add("London");
Iterator 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:在包含城市列表的 List 上演示 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 data = new ArrayList<>();
data.add("New Delhi");
data.add("New York");
data.add("Mumbai");
data.add("London");
data.forEach(new Consumer() {
@Override
public void accept(String t)
{
System.out.println(t);
}
});
}
}
New Delhi
New York
Mumbai
London
在上面的程序中,我们创建了一个包含 4 个元素的字符串列表,然后我们使用 forEach 方法对列表进行了迭代。如前所述,forEach 方法以 Consumer 对象作为输入,我们创建了 Consumer 接口的匿名内部类实现并覆盖了 accept 方法。在这个例子中,我们将业务逻辑保留在匿名内部类中,我们不能重用它。
方案3:在这个方案中,我们将分别演示Consumer接口的实现,以便我们可以重用它。让我们创建一个实现 Consumer 接口并覆盖其接受方法的 CityConsumer 类。
// Java program to demonstrate
// forEach() method of Iterable interface
import java.util.*;
import java.util.function.Consumer;
class CityConsumer implements Consumer {
@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 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: Java/lang/Iterable.html