Java8 Stream flatMap使用
一句话总结,类似于ES6中的多维数组展平
⏹1. flatMap实践
实体类
class User {Integer id;String name;List<String> hobby;// 省略构造方法和toString()重写
}
调用
public static void main(String[] args) {// 初始化测试数据List<String> hobby1 = Arrays.asList("java", "c", "音乐");List<String> hobby2 = Arrays.asList("c++", "c", "游戏");List<User> users = Arrays.asList(new User(1, "张三", hobby1), new User(2, "李四", hobby2));// 将集合中每个用户的爱好进行计算,取并集List<String> result = users.stream()// 获取出每个用户的hobby列表,.map()处理完之后的流中包含若干list.map(user -> user.hobby)// 通过flatMap对流中的list进行展平.flatMap(Collection::stream)// 去重.distinct()// 收集为list.collect(Collectors.toList());System.out.println(result); // [java, c, 音乐, c++, 游戏]
}
⏹2. flatMap实践
public static void main(String[] args) {// 准备二维数组.最终数组结构为 [["aa", "bb", "cc"], ["bb", "cc", "dd"]]List<List<String>> testList = Arrays.asList(Arrays.asList("aa", "bb", "cc"), Arrays.asList("bb", "cc", "dd"));// 通过.flatMap()将多维数组展平List<String> list = testList.stream().flatMap(Collection::stream).collect(Collectors.toList());System.out.println(list); // ["aa", "bb", "cc", "bb", "cc", "dd"]
}
参考资料
1. Java基础之Java8中map和flatMap的使用
Java8 Stream flatMap使用相关推荐
- java双层list扁平化,浅谈java8 stream flatMap流的扁平化操作
概念: Steam 是Java8 提出的一个新概念,不是输入输出的 Stream 流,而是一种用函数式编程方式在集合类上进行复杂操作的工具.简而言之,是以内部迭代的方式处理集合数据的操作,内部迭代可以 ...
- java8 stream to map_Java 8 Stream Api 中的 map和 flatMap 操作
1.前言 Java 8 提供了非常好用的 Stream API ,可以很方便的操作集合.今天我们来探讨两个 Stream 中间操作 map 和 flatMap 2. map 操作 map 操作是将流中 ...
- Java8 Stream详解~映射(map/flatMap)
映射,可以将一个流的元素按照一定的映射规则映射到另一个流中.分为map和flatMap: map:接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素. flatMap:接收一个 ...
- Java8 stream操作
这里记录一下java8的stream语法使用 /*** @author fengzp* @date 2017/4/11下午4:49* @email fengzp@gzyitop.com* @compa ...
- java8函数式编程 视频_快速掌握Java8 Stream函数式编程技巧
函数式编程优势"函数第一位",即函数可以出现在任何地方. 可以把函数作为参数传递给另一个函数,还可以将函数作为返回值. 让代码的逻辑更清晰更优雅. 减少了可变量(Immutable ...
- java 扁平化_java8 stream flatMap流的扁平化操作
概念:Steam 是Java8 提出的一个新概念,不是输入输出的 Stream 流,而是一种用函数式编程方式在集合类上进行复杂操作的工具.简而言之,是以内部迭代的方式处理集合数据的操作,内部迭代可以将 ...
- 简洁又快速地处理集合——Java8 Stream(下)
上一篇文章我讲解 Stream 流的基本原理,以及它与集合的区别关系,讲了那么多抽象的,本篇文章我们开始实战,讲解流的各个方法以及各种操作 没有看过上篇文章的可以先点击进去学习一下 简洁又快速地处理集 ...
- java8 Stream的实现原理 (从零开始实现一个stream流)
1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式.更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算. 1.2 ...
- 玩转 Java8 Stream,常用方法大合集
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/y_k_y/article/details/84633001 一.概述 Stream 是 Java8 中处理集合的关键抽象概念, ...
最新文章
- OSC源创会往期图文回顾链接地址收藏
- Groovy 之 Closure
- 我的工作流为什么启动不了
- linux中运行.pro文件,Linux下pro*c运行配置
- 【动态规划】三种基本背包问题
- Hadoop HDFS (3) JAVA訪问HDFS之二 文件分布式读写策略
- 【HTTP】 认证和单点登录 【瞎写的…】
- bool查询原理 es_es6.2.4,使用bool查询查出的结果,SearchResponse的Hits[]总是比t..._慕课猿问...
- Netty工作笔记0049---阶段内容梳理
- JAVA--异常(1)
- 总结篇——mysql中使用sql语句操作表字段
- 怎么找到安装在Linux系统中的Windows软件的文件
- 迈达斯导出html计算书,动态计算书模块功能-midas Civil 2011
- ListView中如何优化图片
- c语言若输入错误的是,C语言新人常见问题与错误
- AI赐子?!学习数百万个胚胎发育过程,算法可将试管婴儿成功率提高3倍
- 解决k8s中的长连接负载均衡问题
- android环信群聊显名称,Android环信群聊插入头像和昵称
- 欧盟GDPR通用数据保护条例-原文
- Part 1: 3.1 时序逻辑~3.2 flip flop 触发器寄存器