• 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 map = new HashMap<>();
            map.put("x1","xx1");
            map.put("x2","xx2");
            Optional 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 getOne(Map map){
            return Optional.ofNullable(map).map(s -> s.get("x4"));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    执行结果

    # 1
    {x1=xx1, x2=xx2}
    # 2
    {x1=xx1, x2=xx2}
    # 3
    xx1
    # 4
    xxx222
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    LeetCode 刷题 -- 139. 单词拆分
    1102、判断语句、while循环、for循环
    【模型训练】YOLOv7道路交通标志检测
    CGAL4.4+VC2008编译
    操作系统实验二、进程和线程管理(Windows 2学时)多线程创建
    Git设置初始化默认分支为main
    ​全国馆藏《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作——2023学生开学季辉少许
    docker安装和使用
    Java 注解
    丹麦技术大学首创将量子计算应用于能源系统潮流建模
  • 原文地址:https://blog.csdn.net/weixin_39496190/article/details/126585474