前言:
现在咱们对“java中foreach”大致比较重视,咱们都需要知道一些“java中foreach”的相关文章。那么小编同时在网上搜集了一些对于“java中foreach””的相关知识,希望看官们能喜欢,各位老铁们快快来学习一下吧!1. 概览
在 Java 8 中,我们可以使用 forEach 来遍历 Map,List,Set、Stream。
本文主要介绍:
1、遍历 Map
2、遍历 List
3、forEach 和 Consumer
4、forEach vs forEach Ordered
2. 遍历 Map2.1 Java 5 方式遍历 Map
@Testpublic void loopMapJava5() { Map<String, Integer> map = new HashMap<>(); map.put("A", 10); map.put("B", 20); map.put("C", 30); map.put("D", 40); map.put("E", 50); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue()); }}
输出:
key: A, value: 10key: B, value: 20key: C, value: 30key: D, value: 40key: E, value: 502.2 Java 8 方式遍历 Map
@Testpublic void loopMapJava8() { Map<String, Integer> map = new HashMap<>(); map.put("A", 10); map.put("B", 20); map.put("C", 30); map.put("D", 40); map.put("E", 50); map.forEach((k, v) -> System.out.println("key: " + k + ", Value: " + v));}
输出:
key: A, value: 10key: B, value: 20key: C, value: 30key: D, value: 40key: E, value: 502.3 Map 中包含 key 或 value 等于 null 的元素
@Test public void givenNullKeyOrNullValue_loopMapJava8() { Map<String, Integer> map = new HashMap<>(); map.put(null, 10); map.put("B", null); map.put("C", 30); map.put("D", 40); map.put("E", 50); map.forEach((k, v) -> System.out.println("key: " + k + ", Value: " + v)); }
输出:
key: null, Value: 10key: B, Value: nullkey: C, Value: 30key: D, Value: 40key: E, Value: 50
null key、null value 被正常输出。
3. 遍历 List3.1 Java 5 方式遍历 List
@Testpublic void loopListJava8() { List<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); list.add("E"); list.forEach(System.out::println);}
输出:
ABCDE3.2 Java 8 方式遍历 List
@Testpublic void loopListJava8() { List<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); list.add("E"); list.forEach(System.out::println);}
输出:
ABCDE3.3 List 中包含 null 元素
@Testpublic void givenNullElement_loopListJava8() { List<String> list = new ArrayList<>(); list.add("A"); list.add(null); list.add("C"); list.add("D"); list.add("E"); // 过滤null元素 list.stream() .filter(Objects::nonNull) .forEach(System.out::println);}
输出:
ACDE
null 元素被过滤。
4. forEach 和 Consumer
for Each 可以接收函数式接口 Consumer 作为参数:
@Testpublic void foreEachConsumer() { List<Integer> list = Arrays.asList(0, 1, 255); Stream<Integer> stream = Stream.of(0, 1, 255); Consumer<Integer> toHexConsumer = (Integer x) -> { String hex = Integer.toHexString(x); System.out.print(String.format("%n%-10s: %s", x, hex)); }; list.forEach(toHexConsumer); System.out.println(); stream.forEach(toHexConsumer);}
输出:
0 : 01 : 1255 : ff0 : 01 : 1255 : ff5. forEach vs forEachOrdered
@Testpublic void forEachOrdered() { Stream<String> stream = Stream.of("4", "5", "1", "3", "2"); // 不保证顺序,不管是顺序(sequential)输出还是并行(parallel)输出 stream.parallel().forEach(x -> System.out.println(x)); stream = Stream.of("4", "5", "1", "3", "2"); // 保障顺序, 总是输出 4", "5", "1", "3", "2" stream.parallel().forEachOrdered(x -> System.out.println(x));}
输出:
--- 不保证顺序 ---31246--- 保证顺序 ---123456. 总结
本文简明介绍了 Java 8 中的 forEach 的用法。
文章中用到的示例代码,在 Gitee 中可以快速查看、下载、运行。
All test passed on Java 8.
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java中foreach