一句话总结,类似于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使用相关推荐

  1. java双层list扁平化,浅谈java8 stream flatMap流的扁平化操作

    概念: Steam 是Java8 提出的一个新概念,不是输入输出的 Stream 流,而是一种用函数式编程方式在集合类上进行复杂操作的工具.简而言之,是以内部迭代的方式处理集合数据的操作,内部迭代可以 ...

  2. java8 stream to map_Java 8 Stream Api 中的 map和 flatMap 操作

    1.前言 Java 8 提供了非常好用的 Stream API ,可以很方便的操作集合.今天我们来探讨两个 Stream 中间操作 map 和 flatMap 2. map 操作 map 操作是将流中 ...

  3. Java8 Stream详解~映射(map/flatMap)

    映射,可以将一个流的元素按照一定的映射规则映射到另一个流中.分为map和flatMap: map:接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素. flatMap:接收一个 ...

  4. Java8 stream操作

    这里记录一下java8的stream语法使用 /*** @author fengzp* @date 2017/4/11下午4:49* @email fengzp@gzyitop.com* @compa ...

  5. java8函数式编程 视频_快速掌握Java8 Stream函数式编程技巧

    函数式编程优势"函数第一位",即函数可以出现在任何地方. 可以把函数作为参数传递给另一个函数,还可以将函数作为返回值. 让代码的逻辑更清晰更优雅. 减少了可变量(Immutable ...

  6. java 扁平化_java8 stream flatMap流的扁平化操作

    概念:Steam 是Java8 提出的一个新概念,不是输入输出的 Stream 流,而是一种用函数式编程方式在集合类上进行复杂操作的工具.简而言之,是以内部迭代的方式处理集合数据的操作,内部迭代可以将 ...

  7. 简洁又快速地处理集合——Java8 Stream(下)

    上一篇文章我讲解 Stream 流的基本原理,以及它与集合的区别关系,讲了那么多抽象的,本篇文章我们开始实战,讲解流的各个方法以及各种操作 没有看过上篇文章的可以先点击进去学习一下 简洁又快速地处理集 ...

  8. java8 Stream的实现原理 (从零开始实现一个stream流)

    1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式.更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算. 1.2  ...

  9. 玩转 Java8 Stream,常用方法大合集

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/y_k_y/article/details/84633001 一.概述 Stream 是 Java8 中处理集合的关键抽象概念, ...

最新文章

  1. OSC源创会往期图文回顾链接地址收藏
  2. Groovy 之 Closure
  3. 我的工作流为什么启动不了
  4. linux中运行.pro文件,Linux下pro*c运行配置
  5. 【动态规划】三种基本背包问题
  6. Hadoop HDFS (3) JAVA訪问HDFS之二 文件分布式读写策略
  7. 【HTTP】 认证和单点登录 【瞎写的…】
  8. bool查询原理 es_es6.2.4,使用bool查询查出的结果,SearchResponse的Hits[]总是比t..._慕课猿问...
  9. Netty工作笔记0049---阶段内容梳理
  10. JAVA--异常(1)
  11. 总结篇——mysql中使用sql语句操作表字段
  12. 怎么找到安装在Linux系统中的Windows软件的文件
  13. 迈达斯导出html计算书,动态计算书模块功能-midas Civil 2011
  14. ListView中如何优化图片
  15. c语言若输入错误的是,C语言新人常见问题与错误
  16. AI赐子?!学习数百万个胚胎发育过程,算法可将试管婴儿成功率提高3倍
  17. 解决k8s中的长连接负载均衡问题
  18. android环信群聊显名称,Android环信群聊插入头像和昵称
  19. 欧盟GDPR通用数据保护条例-原文
  20. Part 1: 3.1 时序逻辑~3.2 flip flop 触发器寄存器

热门文章

  1. UBuntu 11.04上架设ACE日志服务器
  2. 【经验帖】项目经理的核心价值:以目标为导向做正确的事
  3. 无人货架和无人货柜对比
  4. Zygote进程启动过程源代码分析
  5. Google Earth 成长历程的15个小故事
  6. 双十一提前盘点 这些必入的科大讯飞AI生产力好物
  7. linux下保护视力、定时强制锁定软件: Workrave
  8. 2020年下半年信息系统监理师上午真题及答案解析
  9. 红米K50 Pro上手体验
  10. Python中*args和**kwargs的使用方法