Optional类中map和flatMap的区别

java 文章 2022-07-22 12:00 677 0 全屏看文

AI助手支持GPT4.0

转自:

http://www.java265.com/JavaCourse/202206/3666.html

Optional是一个容器对象,
可以包含也可以不包含非null值。
Optional在Java 8中引入,目的是解决  NullPointerExceptions的问题。
本质上,Optional是一个包装器类,其中包含对其他对象的引用。
在这种情况下,对象只是指向内存位置的指针,并且也可以指向任何内容。
从其它角度看,Optional提供一种类型级解决方案来表示可选值而不是空引用

下文笔者讲述Optional类中map和flatMap的区别说明,如下所示

map和flatMap的区别
   map方法:接受一个映射函数参数,返回一个被Optional包装的结果。若结果为空,则返回 空Optional
   flatMap方法:接受一个返回值为Optional的映射函数参数,该返回值亦是flatMap方法的返回值
     若结果为空,则返回 空Optional。

public class User {
        String name;
        Integer age;
        public User(){
 
        }
        public User(String name, Integer age){
            this.name = name;
            this.age = age;
        }
        ... // getter setter
       
    } 

    @Test
    void mapOptionalTest(){
        User user = new User("java265.com",88);
        Optional<Optional<String>> optionalOptional = Optional.ofNullable(user).map(this::getName);
        Optional<String> mapOptional = Optional.ofNullable(user).map(s -> s.getName());
        Optional<String> flatOptional = Optional.ofNullable(user).flatMap(this::getName);

    }
 
    private Optional<String> getName(User user){
        return Optional.ofNullable(user).map(s -> s.getName());
    }
-EOF-

AI助手支持GPT4.0


国内超级便宜服务器

摸鱼人热门新闻聚合

钻级赞助商 我要加入

开发者在线工具

第三方支付技术请加QQ群

相关文章
Java对map做count统计、累加、求和、排序、分组等操作
day04_数组
零基础学Java(10)面向对象-使用LocalDate类完成日历设计
Java判定一个数值是否在指定的开闭区间范围内
java使用javax.validation 校验字段是不是32位的md5字符串
随便看看
企业微信通讯录账号被管理员误/恶意删除,怎么办? 9389
问题? 8910
如何快速搭建抽奖助手小程序(无需代码知识) 6040
许涛 大哥在吗, 要解冻小程序的时候提示信息主体不一致, 能帮忙看下吗? 7344
小程序搜一搜全称搜索不显示 麻烦解决一下!谢谢 6671
我的小程序广告收款主体是个体工商户,每个月邮寄两次发票很是麻烦,我年底的时候打包邮寄一次可以么? 5999
如何解决渲染层网络错误Failed to load media? 17276
小程序找号找回 释放昵称? 3151
我的小程序广告主收入5301,实际进账4406,是怎么回事呀? 3014
删除部分微信用户个人数据的通知,怎么删除? 6261