Java 8 forEach

Java 8 forEach

java foreach是一种实用程序方法,用于在集合或流上迭代并对其中的每一个元素执行特定操做。java

1. Java 8 forEach方法

下面的代码片断显示的默认实现的java的forEach方法可迭代接口。它使该方法可用于除Map以外的全部集合类ide

该方法对全部元素执行给定的操做,直到全部元素被处理或动做抛出异常为止。学习

表示接受单个输入参数且不返回结果的操做。它是接口的一个实例。ui

Iterable.java this

default void forEach(Consumer<? super T> action) {
    Objects.requireNonNull(action);
    for (T t : this) {
        action.accept(t);
    }
}

能够使用此简单语法建立自定义操做。此处类型应替换为集合或流中的元素类型。code

Consumer<Object> action = new Consumer<Object>()
{
    @Override
    public void accept(Object t)
    {
        //perform action
    }
};

2. Java 8流forEach示例

Java程序迭代流的全部元素并执行操做。在此示例中,咱们将打印全部偶数。orm

Java 8 forEach over流元素blog

ArrayList<Integer> numberList = new ArrayList<>(Arrays.asList(1,2,3,4,5));
     
Consumer<Integer> action = System.out::println;
 
numberList.stream().filter(n -> n%2  == 0).forEach( action );

程序输出。接口

2
4

3.使用List的Java forEach示例

Java程序遍历arraylist的全部元素并执行操做。这里的操做就像在控制台中打印出元素同样简单。get

Java 8 forEach列表元素

ArrayList<Integer> numberList = new ArrayList<>(Arrays.asList(1,2,3,4,5));
     
Consumer<Integer> action = System.out::println;
 
numberList.forEach(action);

程序输出。

1
2
3
4
5

4.使用Map的Java forEach示例

Java程序遍历HashMap的全部条目并执行操做。咱们还能够遍历映射键和值,并对全部元素执行任何操做。

Java 8 forEach映射条目

HashMap<String, Integer> map = new HashMap<>();
     
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
 
//1. Map entries
Consumer<Map.Entry<String, Integer>> action = System.out::println;
 
map.entrySet().forEach(action);
 
//2. Map keys
Consumer<String> actionOnKeys = System.out::println;
 
map.keySet().forEach(actionOnKeys);
 
//3. Map values
Consumer<Integer> actionOnValues = System.out::println;
 
map.values().forEach(actionOnValues);

程序输出。

A=1
B=2
C=3
 
A
B
C
 
1
2
3

5.建立自定义方法

咱们还能够建立自定义操做方法,以对集合中的每一个元素执行自定义逻辑。

建立自定义操做方法

HashMap<String, Integer> map = new HashMap<>();
     
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
 
Consumer<Map.Entry<String, Integer>> action = entry ->
{
    System.out.println("Key is : " + entry.getKey());
    System.out.println("Value is : " + entry.getValue());
};
 
map.entrySet().forEach(action);

程序输出。

Key is : A
Value is : 1
 
Key is : B
Value is : 2
 
Key is : C
Value is : 3

学习愉快!

参考文献:

Java可迭代接口