`

map和flatmap的区别

 
阅读更多
对于stream,   两者的输入都是stream的每一个元素,map的输出对应一个元素,必然是一个元素(null也是要返回),flatmap是0或者多个元素(为null的时候其实就是0个元素)。
flatmap的意义在于,一般的java方法都是返回一个结果,但是对于结果数量不确定的时候,用map这种java方法的方式,是不太灵活的,所以引入了flatmap。

对于Optional的map和flatmap:
map是把结果自动封装成一个Optional,但是flatmap需要你自己去封装。


public static void main(String[] args) {
  Optional<String> s = Optional.of("input");
  System.out.println(s.map(Test::getOutput));
  System.out.println(s.flatMap(Test::getOutputOpt));
}
 
static Optional<String> getOutputOpt(String input) {
  return input == null ? Optional.empty() : Optional.of("output for " + input);
}
 
static String getOutput(String input) {
  return input == null ? null : "output for " + input;
}
//这两种返回的结果是一样的

0
0
分享到:
评论

相关推荐

    浅析scala中map与flatMap的区别

    map 和 flatMap 函数都是 Scala 中非常重要的函数,它们都可以将一个函数应用于集合中的每个元素,但是它们之间存在着很大的区别。map 函数将每个元素映射为一个新对象,而 flatMap 函数将每个元素映射为一个新集合...

    Swift 进阶 —— map 和 flatMap的使用

    Swift中的`map`和`flatMap`是两种非常重要的高阶函数,它们被广泛应用于处理集合类型,如数组、字典等。这两个函数的主要作用是对集合中的每个元素进行操作,并返回一个新的集合。 首先,我们来看看`map`。`map`...

    Java 8 Stream Api 中的 map和 flatMap 操作方法

    map 和 flatMap 操作的区别在于,map 操作只是提取属性放入流中,而 flatMap 先提取属性放入一个比较小的流,然后再将所有的流合并为一个流。flatMap 操作可以帮助开发者更方便地解决一些数据流的操作问题。 另外,...

    flatMap降维Map区别.zip

    在Swift编程语言中,`map`和`flatMap`都是高阶函数,它们在处理集合(如数组)时扮演着重要角色。这两个函数都是用于转换数组中的元素,但它们的使用场景和效果有所不同。理解这两者之间的区别对于编写更加高效、...

    swift map,reduce,filter,flatmap

    在Swift中,`map`、`reduce`、`filter`和`flatMap`是四个非常重要的高阶函数,它们是函数式编程的核心概念,能帮助我们以更简洁、更可读的方式处理集合数据。在这篇文章中,我们将深入探讨这四个函数的使用方法和...

    es6数组的flat(),flatMap()函数用法实例分析

    flatMap()方法则在某种程度上可以看作是map()和flat()的结合体。首先,flatMap()会对原数组的每个元素执行一个函数(类似于map()),然后将结果展开一层(类似于flat())。不过flatMap()只能展开一层数组,这就意味...

    Java8 Stream flatmap中间操作用法解析

    在上面的代码中,我们首先使用 filter 操作来找到教学科目为“数学”的老师,然后使用 flatmap 操作来找到这些老师对应的学生,最后使用 map 操作来找到对应的家长,并将电子邮件发送到他们的邮箱中。 flatmap 操作...

    4399大数据笔试题.pdf

    4. map和flatMap区别:map是一对一映射,flatMap是一对多映射,会产生更多的分区。 5. RDD的依赖方式:窄依赖和宽依赖,窄依赖可以在同一Stage内处理,宽依赖需要创建新的Stage。 6. Hive SQL查询涉及聚合、分组、...

    用于JavaScript的异步迭代器扩展库包括mapreducefilterflatMappipe等

    这个名为"axax"的扩展库正是针对JavaScript的异步迭代器进行了功能增强,提供了诸如map、reduce、filter、flatMap和pipe等实用方法,使得异步数据处理更加方便和高效。 首先,我们来了解下这些方法: 1. **异步Map...

    前端开源库-flatmap

    flatmap函数结合了map和flat的功能,首先对数组中的每个元素应用一个函数,然后将结果合并成一个新的单一层次的数组。这种操作在处理需要先变换再扁平化的数据时非常有用,比如在遍历树形结构、组合异步操作或者在...

    Java基础知识点概括

    8.Map和FlatMap流操作之间的主要区别是什么? 9.Map和Flat map流操作之间的相似之处是什么? 10.定义流管道? 11.什么是使用Stream Pipeline的强制性? 12.新日期和时间API的作用是什么? 13.Java SE 8的核心API类是...

    js代码-012手写代码练习-----数组扁平化---flatMap map reduce contact

    通过阅读和实践这些代码,你可以更深入地理解`flatMap`、`map`、`reduce`和`concat`在数组扁平化中的应用。 总结一下,数组扁平化是处理多维数组时的常见需求,`flatMap`、`map`、`reduce`和`concat`都是JavaScript...

    理解 Monad.ec7c2600-28aa-11e7-bc3c-7b576b2949e6.pdf

    掌握Monad的map和flatMap操作以及Optional类型对于编写简洁且安全的Swift代码至关重要。通过使用这些操作,我们可以构建出高度模块化且易于维护的代码,有效处理错误情况,并且在进行集合操作和处理可能不存在的数据...

    DIY函数式方法原理

    在本主题“DIY函数式方法原理”中,我们将探讨如何在Java中实现四个关键的函数式编程方法:forEach、map、flatMap和filter。 1. **forEach**:这个方法来源于Java 8中的Stream API,用于遍历集合中的每一个元素。它...

    Scala学习第一天(十五):函数式编程(foreach遍历/map映射/flatMap扁平化映射/filter过滤/sort排序/groupBy分组/reduce聚合/fold折叠)

    学习目标遍历(foreach)使用类型推断简化函数定义使用下划线来简化函数定义映射(map)扁平化映射(flatMap)过滤(filter)排序(sort)默认排序 | sorted指定字段排序 | sortBy自定义排序 | sortWith分组(group...

    axax:JavaScript的异步迭代器扩展,例如,map,reduce,filter,flatMap等

    异步迭代扩展为JavaScript包括的文库map , reduce , filter , flatMap , pipe和。 安装 npm install axax # or yarn add axax 为什么选择Axax? 异步迭代器是处理异步流的有用方法。 该库添加了许多实用程序...

    Spark算子的详细使用方法

    flatMap 算子首先进行 map 操作,最后将每一个分区中的 RDD 合并成一个 RDD。filter 算子用来过滤数据,删除不需要的数据。reduceByKey 算子用来聚合数据,计算每个键对应的值的和。 Action 算子包括 collect、...

    无循环 JavaScript(map、reduce、filter和find)

    无循环编程通常通过使用数组方法,如`map`、`reduce`、`filter`和`find`来实现。这些方法允许我们以更简洁的方式处理数组中的数据,减少了代码重复和潜在的错误。 1. **map** 方法: `map`函数接受一个函数作为...

Global site tag (gtag.js) - Google Analytics