当前位置: 首页 > article >正文

Java Stream API flatMap()方法介绍

Stream API flatMap()方法介绍

flatMap()简介

flatMap 的主要作用是将一个流中的每个元素转换为另一个流,然后将这些流合并成一个单一的流。经常用作处理嵌套的流。

标准语法
Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)
示例

假设现在有一个年龄列表ageList和学生信息列表studentList,需要从studentList中取出有年龄age在年龄列表中的学生信息

  • 不使用stream方法
    使用两个for循环,拿每一个age和每一个学生的年龄作比较,如果符合则添加进结果中
    for (int age : ageList) {
        for (SysStudent student : studentList) {
            if (student.getStudentAge() == age) {
                resultList.add(student);
            }
        }
    }
    
  • 使用stream方法
    ageList中的age扁平化成多个流,分别根据每个age做过滤,如果满足条件则收集起来
    resultList = ageList.stream()
                .flatMap(age -> studentList.stream()
                        .filter(student -> student.getStudentAge() == age))
                .collect(Collectors.toList());
    

flatMap和map的区别

  • flatMap:将流中的每个元素转换为另一个流,并将这些流合并成一个单一的流。
  • map:将流中的每个元素转换为另一个对象,但不涉及流的扁平化。

我自己的理解是这样的
在这里插入图片描述

比如本例中,如果使用map,则需要在后续步骤中合并成单一的流

        List<List<SysStudent>> mappedResult = ageList.stream()
                .map(age -> studentList.stream()
                        .filter(student -> student.getStudentAge() == age)
                        .collect(Collectors.toList()))
                .collect(Collectors.toList());
        resultList = mappedResult.stream()
                .flatMap(List::stream)
                .collect(Collectors.toList());

http://www.kler.cn/a/349257.html

相关文章:

  • KEIL新建51工程
  • 科普向--什么是CI/CD
  • 使用API有效率地管理Dynadot域名,查看域名服务器(Name Server)列表
  • sql的调优指南及高级sql技巧
  • 新装ubuntu22.04必做两件事,不然可能没法用
  • Java微信支付接入(9) - API V3 微信支付查单API
  • Linux的zookeeper安装部署
  • Agent自动执行异常场景下,通过人工介入提高可用性|实在Agent研究
  • FLINK SQL语法(1)
  • Python中的`raise`语句:如何优雅地处理异常?
  • 商标侵权屡禁不止,保护之路何去何从
  • jupyterlab的安装与使用攻略/包括汉化方法
  • 【Redis】Set类型常用命令
  • CSS伪元素详解
  • 【火山引擎】调用火山大模型的方法 | SDK安装 | 配置 | 客户端初始化 | 设置
  • leetcode hot 100 之【LeetCode 283. 移动零】 java实现
  • 10.15学习
  • 电子电气架构---软件定义汽车,产业变革
  • C语言笔记 13
  • 【Fargo】2:发送侧流量统计