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.参考

相关推荐
mqiqe14 分钟前
AgentScope Java 2.0 技能仓库(Skill Repository)完全实战指南
java·开发语言·elasticsearch
Mr数据杨35 分钟前
【Codex】用学生支持周报模块跟踪个性化支持进展
android·java·javascript·django·codex·项目开发
JavaPub-rodert43 分钟前
Apache Jena 详解:Java 开发者如何真正搭起一套知识图谱与语义服务
java·apache·知识图谱
lhldsg1 小时前
线上住宿预约系统开发实战:从需求分析到接口设计
java·大数据·小程序·需求分析
剑指offer.1 小时前
Linux多任务-线程篇
java·jvm·算法
2601_962063971 小时前
Spring Boot拦截器(Interceptor)详解
java·spring boot·后端
这是程序猿1 小时前
深入剖析Java HashMap:底层原理、数据结构与核心机制全解析
java·开发语言·数据结构
不才不才不不才1 小时前
Spring 源码系列(25): @EnableTransactionManagement 与 TransactionInterceptor
java·数据库·spring
隔窗听雨眠2 小时前
CI/CD测试数据清理完全指南:从污染根因到三层清理覆盖的完整方案
java·数据库·ci/cd
Query*2 小时前
Agent 开发之项目 AI 能力自我进化:通过浏览器自动化与数据采集实现持续学习
java·人工智能·ai·自动化