目錄
Java 8 forEach
java foreach是一種實用程序方法,用於在集合或流上迭代並對其中的每個元素執行特定操作。
1. Java 8 forEach方法
下面的代碼片段顯示的默認實現的java的forEach方法在可迭代接口。它使該方法可用於除Map之外的所有集合類。
該方法對所有元素執行給定的操作,直到所有元素被處理或動作拋出異常為止。
表示接受單個輸入參數且不返回結果的操作。它是接口的一個實例。
Iterable.java
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
可以使用此簡單語法創建自定義操作。此處類型應替換為集合或流中的元素類型。
Consumer<Object> action = new Consumer<Object>()
{
@Override
public void accept(Object t)
{
//perform action
}
};
2. Java 8流forEach示例
Java程序迭代流的所有元素並執行操作。在此示例中,我們將打印所有偶數。
Java 8 forEach over流元素
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的所有元素並執行操作。這里的操作就像在控制台中打印出元素一樣簡單。
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可迭代接口