JAVA8系列教程-forEach
温馨提示:
本文最后更新于 2019年12月15日,已超过 2,143 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
JAVA的forEach是一个实用方法来遍历集合或流,并执行它的每个元件上的特定动作。
1. Java 8 forEach方法
下面的代码片段显示的默认实现的java的forEach方法在Iterable接口。它使该方法可用于除Map之外的所有集合类。
该方法执行每个元素的给定动作的Iterable直到所有元素都已经被处理或动作抛出异常。
的action代表接受单个输入参数,并返回任何结果的操作。它是Consumer接口的一个实例。
default void forEach(Consumer<? super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); }} |
可以使用此简单语法创建自定义操作。在这里,Objecttype必须用集合或流中元素的类型替换。
Consumer<Object> action = new Consumer<Object>(){ @Override public void accept(Object t) { //perform action }}; |
2. Java 8流forEach示例
Java程序迭代流的所有元素并执行操作。在此示例中,我们将打印所有偶数。
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 ); |
程序输出。
24 |
3.使用List的Java forEach示例
Java程序遍历arraylist所有元素并执行操作。这里的操作就像在控制台中打印出元素一样简单。
Java 8 forEach list elements
ArrayList<Integer> numberList = new ArrayList<>(Arrays.asList(1,2,3,4,5)); Consumer<Integer> action = System.out::println;numberList.forEach(action); |
程序输出。
12345 |
4.使用Map的Java forEach示例
Java程序遍历HashMap所有条目并执行操作。我们还可以遍历映射键和值,并对所有元素执行任何操作。
HashMap<String, Integer> map = new HashMap<>(); map.put("A", 1);map.put("B", 2);map.put("C", 3);//1. Map entriesConsumer<Map.Entry<String, Integer>> action = System.out::println;map.entrySet().forEach(action);//2. Map keysConsumer<String> actionOnKeys = System.out::println;map.keySet().forEach(actionOnKeys);//3. Map valuesConsumer<Integer> actionOnValues = System.out::println;map.values().forEach(actionOnValues); |
程序输出。
A=1B=2C=3ABC123 |
3.创建自定义动作
我们还可以创建自定义操作方法,以对集合中的每个元素执行自定义逻辑。
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 : AValue is : 1Key is : BValue is : 2Key is : CValue is : 3 |
学习愉快!
References:
正文到此结束
- 本文标签: 其他
- 本文链接: https://www.v8en.com/article/229
- 版权声明: 本文由SIMON原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权