Java8新特性之FlatMap&Reduce
2022/6/6 1:19:41
本文主要是介绍Java8新特性之FlatMap&Reduce,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.FlagMap
// flatMap:接收一个T返回一个R,将一个元素转为一个新的流 ;R apply(T t); <R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);
示例代码
// flatMap: 将一个元素转为一个新的流 1-N List<String> asList = Arrays.asList("zs", "ls", "ww", "zl", "tq"); List<String> stringList = asList.stream() .flatMap(item -> Arrays.asList(("1" + item).toUpperCase(), ("2" + item).toUpperCase(), ("3" + item).toUpperCase()).stream()) .collect(Collectors.toList()); System.out.println("stringList = " + stringList);
2.Reduce
// reduce:接收一个BinaryOperator类型的函数式接口,将多个元素归并为一个 Optional<T> reduce(BinaryOperator<T> accumulator);
示例代码
// reduce: 将多个元素归并为一个 N-1 List<Integer> asList = Arrays.asList(1, 2, 3, 4, 5); Optional<Integer> optional = asList.stream().reduce((x, y) -> x + y); System.out.println("optional.get() = " + optional.get());
3.Concat合并流
List<Qiu> list1 = Arrays.asList(new Qiu(1L, "AA"), new Qiu(2L, "BB"), new Qiu(3L, "CC")); List<Qiu> list2 = Arrays.asList(new Qiu(3L, "DD"), new Qiu(2L, "EE"), new Qiu(5L, "FF")); // Stream<Qiu> concat = Stream.concat(list1.stream(), list2.stream()); Map<Long, Qiu> map = new HashMap<>(); Stream.concat(list1.stream(), list2.stream()).forEach(item -> { Qiu qiu = item; if (map.containsKey(item.getId())) { qiu = map.get(item.getId()); qiu.setName(qiu.getName() + "---" + item.getName()); } map.put(item.getId(), qiu); }); System.out.println("map = " + map); List<Qiu> qiuList = map.values().stream().collect(Collectors.toList()); System.out.println("qiuList = " + qiuList);
这篇关于Java8新特性之FlatMap&Reduce的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?