Java8 - flatMap() 介绍

1.flatMap() 的作用与用法

在 Java8 中引入了 SteamAPI,其中有一个功能是 flatMap()。它的作用是将一个二维数组处理成一维数组,或者说是将一个 2 级 Stream 处理成 1 级 Stream。

举例来说,下面的二维数组可以通过 flatMap() 处理成一维数组。

java 复制代码
// 二维数据
Integer[][] twoDimArr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
// 一维数据
Integer[] oneDimArr = {1,2,3,4,5,6,7,8,9}

处理过程为:

java 复制代码
Integer[][] twoDimArr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Integer[] onewDimArr = Arrays.stream(twoDimArr).flatMap(Arrays::stream).toArray(Integer[]::new);

这一过程也可以理解为将 2 级的流 Stream<Integer[]>展平成了 1 级的流 Stream<Integer>

从语法上来看,我们在 flatMap 中要写的是一个 lambda 表达式(或上图中的方法引用),而这个表达式要做的是将一维数组(比如 Integer[])转成流形式。

更多的例子可以参考 Java8 - Streams flatMap()

2.参考

相关推荐
Java爱好狂.3 分钟前
复杂知识简单学!Springboot加载配置文件源码分析
java·spring boot·后端·spring·java面试·后端开发·java程序员
Array*6 分钟前
java实现word中插入附件(支持所有文件格式)
java·开发语言·word·poi·ole
Donald_brian12 分钟前
线程同步
java·开发语言·jvm
全靠bug跑27 分钟前
Nacos 入门实战:部署、服务注册与发现全指南
java·spring cloud·docker·nacos
郑州光合科技余经理27 分钟前
技术视角:海外版一站式同城生活服务平台源码解析
java·开发语言·uni-app·php·排序算法·objective-c·生活
喵了meme27 分钟前
Linux学习日记19:线程同步与互斥锁
java·jvm·学习
郑州光合科技余经理29 分钟前
海外版生活服务系统源码 | 外卖+跑腿一站式平台技术解析
java·开发语言·javascript·git·spring cloud·php·生活
小小Fred29 分钟前
Cortex-M3 LR寄存器的特殊值EXC_RETURN
java·开发语言·jvm
小小心愿家30 分钟前
线程——对于锁的进一步认识
java·开发语言
曹牧36 分钟前
Java: FATAL ERROR: processing of -javaagent failed
java·开发语言