Optional小记

Optional小计

参考博客

参考博客1

标题:Optional是个好东西,你会用么?(全面深度解析)

链接:https://blog.csdn.net/DBC_121/article/details/104984093?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166174195316782390593442%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=166174195316782390593442&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~pc_rank_34-1-104984093-null-null.142v42pc_rank_34,185v2control&utm_term=Optional%E6%98%AF%E5%81%9A%E4%BB%80%E4%B9%88%E7%94%A8%E7%9A%84&spm=1018.2226.3001.4187

参考博客2

标题:Optional用法

链接:https://blog.csdn.net/Carrots_vegetables/article/details/109289415?ops_request_misc=&request_id=&biz_id=102&utm_term=Optional&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-109289415.nonecase&spm=1018.2226.3001.4187

参考博客3

标题:Optional类的map和flatMap的区别

链接:https://blog.csdn.net/DataB/article/details/107072400?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166175162116782246428733%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166175162116782246428733&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-107072400-null-null.142v42pc_rank_34,185v2control&utm_term=optional%E7%9A%84map%E5%92%8Cflatmap%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187

参考博客4

标题:Java8的Optional是不是鸡肋?

链接:https://blog.csdn.net/g6U8W7p06dCO99fQ3/article/details/118282653?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166175539916781667878924%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=166175539916781667878924&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~pc_rank_34-2-118282653-null-null.142v42pc_rank_34,185v2control&utm_term=optional%E7%9A%84%E7%BC%BA%E7%82%B9&spm=1018.2226.3001.4187

代码参考

public class PublicTest {

    // isPresent方法 、 get()方法 、 orElse方法 、 map()方法
    @Test
    public void test(){
        Map<String,String> map = new HashMap<>();
        map.put("x1","xx1");
        map.put("x2","xx2");
        Optional<Map> stringOptional = Optional.ofNullable(map); //null
        // 1 isPresent方法 : 如果值存在返回true,否则返回false
        System.out.println("# 1");
        if (stringOptional.isPresent()) {
            // 2 get()方法 : 如果Optional有值则将其返回,否则抛出NoSuchElementException。因此也不经常用
            System.out.println(stringOptional.get());
        }else{
            System.out.println("=====");
        }

        // 3 orElse方法 : 如果有值则将其返回,否则返回指定的其它值
        System.out.println("# 2");
        System.out.println(stringOptional.orElse(new HashMap(){{
            this.put("x3","xx3");
            this.put("x4","xx4");
        }}));

        // 4 map方法 : 如果有值,则对其执行调用mapping函数得到返回值。如果返回值不为null,则创建包含mapping返回值的Optional作为map方法返回值,否则返回空Optional。
        System.out.println("# 3");
        System.out.println(stringOptional.map(
                par -> par.get("x1")
        ).orElse("xxx222"));

        // 4 flatMap方法 : 如果有值,为其执行mapping函数返回Optional类型返回值,否则返回空Optional
        System.out.println("# 4");
        System.out.println(stringOptional.flatMap(
                this::getOne
        ).orElse("xxx222"));
    }

    public Optional<String> getOne(Map<String,String> map){
        return Optional.ofNullable(map).map(s -> s.get("x4"));
    }
}

执行结果

# 1
{x1=xx1, x2=xx2}
# 2
{x1=xx1, x2=xx2}
# 3
xx1
# 4
xxx222
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值