Java 8 forEach

[TOC]java

Java 8 forEach

java foreach是一種實用程序方法,用於在集合或流上迭代並對其中的每一個元素執行特定操做。ide

1. Java 8 forEach方法

下面的代碼片斷顯示的默認實現的java的forEach方法可迭代接口。它使該方法可用於除Map以外的全部集合類學習

該方法對全部元素執行給定的操做,直到全部元素被處理或動做拋出異常爲止。ui

表示接受單個輸入參數且不返回結果的操做。它是接口的一個實例。this

<b> Iterable.java </b>spa

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

<b>Java 8 forEach over流元素</b>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 );

<b>程序輸出。</b>接口

2
4

3.使用List的Java forEach示例

Java程序遍歷<font color='bule'>arraylist</font>的全部元素並執行操做。這裏的操做就像在控制檯中打印出元素同樣簡單。

Java 8 forEach列表元素

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

<b>程序輸出。</b>

1
2
3
4
5

4.使用Map的Java forEach示例

Java程序遍歷<font color='blue'>HashMap</font>的全部條目並執行操做。咱們還能夠遍歷映射鍵和值,並對全部元素執行任何操做。

<b>Java 8 forEach映射條目</b>

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);

<b>程序輸出。</b>

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

5.建立自定義方法

咱們還能夠建立自定義操做方法,以對集合中的每一個元素執行自定義邏輯。

<b>建立自定義操做方法</b>

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);

<b>程序輸出。</b>

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

學習愉快!

參考文獻:

<font color='blue'>Java</font>可迭代接口

相關文章
相關標籤/搜索