当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Iterable forEach()用法及代码示例


自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



相关用法


注:本文由纯净天空筛选整理自go2ksr大神的英文原创作品 Iterable forEach() method in Java with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。