[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>可迭代接口