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