zoukankan      html  css  js  c++  java
  • Optional中的map函数和flatMap函数的区别

    今天在学scala的时候发现Option中有map和flatMap返回的都是Option,然后再java8中的Optional也存在这样两个函数,觉得有点多余。后来分析了一下,还是有存在的必要的。

    1. map函数

    map函数不用问,使用的很广泛,函数签名是public<U> Optional<U> map(Function<? super T, ? extends U> mapper),如入参是一个返回U的function。用法示例如下:

    
     Optional
          .ofNullable(11)
          .map(a -> a * 2)
          .orElse(0);
    
    

    2. flatMap函数

    flatMap函数的函数签名是public<U> Optional<U> flatMap(Function<? super T, Optional<U>> mapper),他的存在的必要性,是因为在使用中,存在很多返回值是Optional的函数,为了在Optional使用这些函数时,返回结果能方便使用,如下可以看出来使用flatMap,对于后续的链式编程非常方便。

       public static void main(String[] args) {
            //对于calculate这种函数,使用flatMap的话,返回的结果还是Optional,方便使用
            Optional<Integer> opt = Optional
                    .ofNullable(11)
                    .flatMap(a -> calculate(a));
    
            //对于calculate这种函数,如果使用map,返回的结果嵌套了Optional
            Optional<Optional<Integer>> opt2 = Optional
                    .ofNullable(11)
                    .map(a -> calculate(a));
    
        }
    
    
        public static Optional<Integer> calculate(int input) {
            return Optional.of(input * 2);
        }
    
  • 相关阅读:
    Kafka的Controller
    kafka 为什么能那么快?高效读写数据,原来是这样做到的
    kafka的消费
    kafka的数据同步原理ISR、ACK、LEO、HW
    kafka 工作流程及文件存储机制
    kafka的简单架构
    Sangfor AC在线用户显示大量公网IP
    H3C抓包命令
    Android- 音量控制
    call指令的地址是怎么计算出来的。
  • 原文地址:https://www.cnblogs.com/IC1101/p/15137598.html
Copyright © 2011-2022 走看看