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的更多相关文章
- 这可能是史上最好的 Java8 新特性 Stream 流教程
本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...
- Java8 新特性之流式数据处理
一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现.比如我们希望对一个包含整数的 ...
- java8新特性--Stream的基本介绍和使用
什么是Stream? Stream是一个来自数据源的元素队列并可以进行聚合操作. 数据源:流的来源. 可以是集合,数组,I/O channel, 产生器generator 等 聚合操作:类似SQL语句 ...
- 乐字节-Java8新特性-接口默认方法之Stream流(下)
接上一篇:<Java8新特性之stream>,下面继续接着讲Stream 5.流的中间操作 常见的流的中间操作,归为以下三大类:筛选和切片流操作.元素映射操作.元素排序操作: 操作 描述 ...
- Java8 新特性之流式数据处理(转)
转自:https://www.cnblogs.com/shenlanzhizun/p/6027042.html 一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作 ...
- Java8 新特性之Stream API
1. Stream 概述 Stream 是Java8中处理集合的关键抽象概念,可以对集合执行非常复杂的查找,过滤和映射数据等操作; 使用 Stream API 对集合数据进行操作,就类似于使用 SQL ...
- java8 新特性精心整理
前言 越来越多的项目已经使用 Java 8 了,毫无疑问,Java 8 是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和 JVM 等方面的十多个新特 ...
- java8 新特性精心整理(全)
前言 越来越多的项目已经使用 Java 8 了,毫无疑问,Java 8 是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和 JVM 等方面的十多个新特 ...
- Java8 新特性 Stream() API
新特性里面为什么要加入流Steam() 集合是Java中使用最多的API,几乎每一个Java程序都会制造和处理集合.集合对于很多程序都是必须的,但是如果一个集合进行,分组,排序,筛选,过滤...这些操 ...
- java8 新特性学习笔记
Java8新特性 学习笔记 1主要内容 Lambda 表达式 函数式接口 方法引用与构造器引用 Stream API 接口中的默认方法与静态方法 新时间日期 API 其他新特性 2 简洁 速度更快 修 ...
随机推荐
- Jquery tableExport.js将网页中的表格导出为Excel
需求:将如下网页中的所有表格一次导入到Excel文件中. 方法:使用jQuery的tableExport.js插件,可以将网页中指定的table表格数据导出到Excel文件,而不需要经过后台. 操作步 ...
- 从Google开发者大会浅谈LLM的应用
这周参加了在上海世博中心举办Google I/O Connect中国开发者大会,有几年没参加这么高质量的活动,有点感慨. 期间重点听了关于GCP和Google AI大语言模型的主题演讲,发现目前各大厂 ...
- 如何成功将 API 客户的 transformer 模型推理速度加快 100 倍
Transformers 已成为世界各地数据科学家用以探索最先进 NLP 模型.构建新 NLP 模块的默认库.它拥有超过 5000 个预训练和微调的模型,支持 250 多种语言,任君取用.无论你使用哪 ...
- fatal: 无法访问 'https://github.com/nmww/lingyun.git/':Failed to connect to github.com port 443 after 13 ms: Connection refused
fatal: 无法访问 'https://github.com/nmww/lingyun.git/':Failed to connect to github.com port 443 after 13 ...
- Insert a scratch project into a ppt (MSPowerPoinT file)在powerpoint中播放Scratch动画
Insert a scratch project into a ppt (MSPowerPoinT file)在powerpoint中播放Scratch动画 Contributed by liu pe ...
- DPDK丢包那些事
本文来自博客园,作者:T-BARBARIANS,博文严禁转载,转载必究! 一.前言 DPDK技术原理相关的文章不胜枚举,但从实战出发,针对DPDK丢包这一类问题进行系统分析的文章还是凤毛麟角. 刚好最 ...
- 虹科案例 | 石油天然气行业CFD高性能计算解决方案
公司简介 DNV GL 是全球领先的能源.石油和海事行业风险管理及资产绩效提升的软件供应商,主要为客户提供全面的风险管理和各类评估认证服务,认证涉及信息通信技术.汽车及航空天.食品与饮料.医疗等方面. ...
- Radius+OpenLdap+USG防火墙认证
1.1.安装OpenLdap # 在数据目录创建ldap文件存放ldap的配置文件 mkdir -p /data/ldap/{data,conf} docker run -p 389:389 -p 6 ...
- 高性能渲染——详解Html Canvas的优势与性能
本文由葡萄城技术团队原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 一.什么是Canvas 想必学习前端的同学们对Canvas 都不陌生,它是 ...
- Java技术_基础技术(0003)_类执行顺序详解+实例(阿里面试题)+详细讲解+流程图
类加载机制 加载.验证.准备.初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的 ...