Java 8 - Optional.flatmap和Optional.map之间的区别

本文探讨了Java 8中Optional类的map和flatMap方法的区别。map方法适用于非Optional返回值的转换,它会将结果包裹在Optional中。而flatMap则在mapping function返回Optional时发挥作用,直接处理内部的值,避免额外的Optional封装。
摘要由CSDN通过智能技术生成

map和flatMap都接收一个mapping function参数。

map和flatMap返回的都是Optional类型的数据。

当mapping function返回的是Optional类型的数据时,可以直接使用flatMap,flatMap直接返回该Optional。

当mapping function返回的不是Optional类型的数据时,使用map,因为map会进行一次Optional的包装。

 

源码如下:

 /**
     * If a value is present, apply the provided mapping function to it,
     * and if the result is non-null, return an {@code Optional} describing the
     * result.  Otherwise return an empty {@code Optional}.
     *
     * @apiNote This method supports post-processing on optional values, without
     * the need to explicitly check for a return status.  For example, the
     * following code traverses a stream of file names, selects one that has
     * not yet been processed, and then opens that file, returning an
     * {@code Optional<FileInputStream>}:
     *
     * <pre>{@code
     *     Optional<FileInpu
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值