1.Java 8 forEach 方法
下面代码段显示了Iterable接口中forEach方法。它是除Map外所用集合类都能使用的工具方法。default void forEach(Consumer super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
这个方法会为每一个迭代元素执行action操作,直到结束或出现异常。
action是Consumer接口的实例,接收一个参数,无返回值。
创建自定义的action。这里的Object类型应该替换成集合或流元素的类型。Consumer action = new Consumer()
{
@Override
public void accept(Object t)
{
//perform action
}
};
2. Java 8 stream 的 forEach 实例
下面程序会遍历流的所有元素,并为每个元素执行action操作。这个例子会打印所有偶数。// stream for each
ArrayList numberList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Consumer action = System.out::println;
numberList.stream().filter(n -> n % 2 == 0).forEach(action);
程序输出2
4
3. Java 8 List 的 forEach 实例
程序会遍历流的所有元素,并为每个元素执行action操作。这个例子只是简单的将元素在控制台打印出来。// list for each
ArrayList numberList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Consumer action = System.out::println;
numberList.forEach(action);
程序输出1
2
3
4
5
4. Java 8 Map 的 forEach 实例
在Map中我们可以将map的entry、keys、values当作元素来遍历,并且执行action。// map for each
HashMap map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
// 1.map entries
Consumer> action = System.out::println;
map.entrySet().forEach(action);
// 2.map keys
Consumer actionOnKeys = System.out::println;
map.keySet().forEach(actionOnKeys);
// 3.map values
Consumer actionOnValues = System.out::println;
map.values().forEach(actionOnValues);
程序输出A=1
B=2
C=3
A
B
C
1
2
3
5. 创建自定义的 action
我们可以自定义自己的action方法,为集合中元素执行我们自己的逻辑。// create custom action
ArrayList numberList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Consumer action = new Consumer() {
@Override
public void accept(Integer integer) {
integer = integer * 2;
System.out.println(integer);
}
};
numberList.forEach(action);
程序输出2
4
6
8
10
使用lambda表达式可以简化action的创建// create custom action with lambda
HashMap map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
Consumer> 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