• Optional 实例


    1.of

    为非 null 的值创建一个 Optional。of 方法通过工厂方法创建 Optional 类。需要注意的是,创建对象时传入的参数不能为 null。如果传入参数为 null,则抛出 NullPointerException 。

    Optional<String> optional = Optional.of("xiaoming");
    //传入null,抛出NullPointerException
    Optional<Object> o = Optional.of(null);


    2.ofNullable

    为指定的值创建一个 Optional,如果指定的值为 null,则返回一个空的 Optional。

    Optional<Object> o1 = Optional.ofNullable(null);

    3.isPresent

    值存在返回 true,否则返回 false

    Optional<String> optiona2 = Optional.of("xiaoming");
    System.out.println(optiona2.isPresent());


    4.get

    Optional 有值就返回,没有抛出 NoSuchElementException

    Optional<Object> o1 = Optional.ofNullable(null);
    System.out.println(o1.get());

    5.ifPresent

    如果 Optional 有值则调用 consumer 处理,否则不处理

    Optional<Object> o1 = Optional.ofNullable(null);
    o1.ifPresent(s -> System.out.println(s));

    6.orElse

    如果有值则将其返回,否则返回指定的其它值

    Optional<Object> o1 = Optional.ofNullable(null);
    System.out.println(o1.orElse("输出orElse")); // 输出orElse

    7.orElseGet

    orElseGet 与 orElse 方法类似,区别在于得到的默认值。orElse 方法将传入的字符串作为默认值,orElseGet 方法可以接受 Supplier 接口的实现用来生成默认值

    Optional<Object> o1 = Optional.ofNullable(null);
    System.out.println(o1.orElseGet(() -> "default value")); // default value

    8.orElseThrow

    如果有值则将其返回,否则抛出 supplier 接口创建的异常。

    Optional<Object> o1 = Optional.ofNullable(null);
    try {
    o1.orElseThrow(() -> new Exception("异常!"));
    } catch (Exception e) {
    System.out.println("info:" + e.getMessage());
    }//输出:info:异常!

    9.map

    如果有值,则对其执行调用 mapping 函数得到返回值。如果返回值不为 null,则创建包含 mapping 返回值的 Optional 作为 map 方法返回值,否则返回空 Optional。

    Optional<String> optional = Optional.of("xiaoming");
    String s = optional.map(e -> e.toUpperCase()).orElse("shiyilingfeng");
    System.out.println(s); //输出: XIAOMING

    10.flatMap

    如果有值,为其执行 mapping 函数返回 Optional 类型返回值,否则返回空 Optional。与 map 不同的是,flatMap 的返回值必须是 Optional,而 map 的返回值可以是任意的类型 T

    Optional<String> optional = Optional.of("xiaoming");
    Optional<String> s = optional.flatMap(e -> Optional.of(e.toUpperCase()));
    System.out.println(s.get()); //输出:XIAOMING

    11.filter

    List<String> strings = Arrays.asList("rmb", "doller", "ou");
    for (String s : strings) {
    Optional<String> o = Optional.of(s).filter(s1 -> !s1.contains("o"));
    System.out.println(o.orElse("没有不包含o的"));
    }//输出:
    rmb
    没有不包含o的
    没有不包含o的
     

     

     
     
     
     
     
  • 相关阅读:
    Linux中conda安装R出现 package ‘utils’ in options("defaultPackages") was not found?
    生物信息软件/流程dockerfile打包参考
    非模式生物的GATK BQSR and VQSR
    【动植物研究动态】20220529文献解读
    基因组云计算书籍推荐:Genomics in the Cloud Using Docker, GATK, and WDL in Terra
    科技论文写作培训(蛋白质组方向)
    Docker容器yum报错连不上网:curl#6 "Could not resolve host: mirrorlist.centos.org; Unknown error"?
    Codeforces Round #782 (Div. 2)
    Codeforces Round #791 (Div. 2)
    sqlserver 判断是否存在,如果存在就update,不存在就insert
  • 原文地址:https://www.cnblogs.com/KL2016/p/16107398.html
Copyright © 2020-2023  润新知