[TOC]java
java foreach是一種實用程序方法,用於在集合或流上迭代並對其中的每一個元素執行特定操做。ide
下面的代碼片斷顯示的默認實現的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 } };
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
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
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
咱們還能夠建立自定義操做方法,以對集合中的每一個元素執行自定義邏輯。
<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>可迭代接口