Optional容器类

Optional容器类

of :为非null的值创建一个Optional

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

isPresent:如果值存在就返回true,否则就返回false

get:如果Optional有值则将其返回,否则抛出NosSuchElementException

ifPresent:如果Optional实例有值则为其调用consumer,否则不做处理

ofElse:如果有值将其返回,否则返回指定的其他值

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

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

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

flatMap:如果有值,为其执行mapping函数返回Optional类型返回值,否则返回空Optional。flatJMap与map(Funtion)方法类似,区别在于flatMap中的mapper返回值必须是Optional,调用结束时,flatMap不会对结果用Optional封装

filter:如果有值并且满足断言条件返回包含该值的Optional。否则返回空的Optional。

package com.lili.java8;

import java.util.Optional;

/**
 * Optional JDK1.8容器类
 * @author: QiJingJing
 * @create: 2021/7/14
 */
public class Test5 {
    public static void main(String[] args){
        // 创建Optional的方式
        // 1.of()不能为null
        Optional<String> optional1 = Optional.of("abc");
        //2 如果传值为空,返回一个空的Optional对象
        Optional<String> optional2 = Optional.ofNullable(null);
        //3返回一个空的Optional对象
        Optional<String> optional3 = Optional.empty();
        //如果有值返回true,没有返回false
        System.out.println(optional1.isPresent());
        // 如果有值将其返回,否则抛出NoSuchElementException
        System.out.println(optional1.get());
        // 如果有值就打印
        optional1.ifPresent(System.out::println);
        // 有值就返回,没有就返回你指定的值
        System.out.println(optional2.orElse("无值"));
        // 有值就返回,没值打印default
        String s = optional3.orElseGet(() -> "default");
        System.out.println(s);
        // 进行操作生成一个新的Optional对象
        Optional<String> optional4 = optional1.map(String::toUpperCase);
        System.out.println(optional4.orElse("no found"));
        //flatMap与map的区别是必须返回Optional对象,需要手动封装Optional对象
        Optional<String> optional5 = optional1.flatMap(s1 -> Optional.of(s1.toUpperCase()));
        System.out.println(optional5.orElse("no found"));
        // filter(过滤)
        Optional<String> optional6 = optional1.filter(s1 -> s1.length() > 2);
        System.out.println(optional6.orElse("长度小于2"));
    }
}

posted @ 2021-07-14 07:54  JamieChyi  阅读(18)  评论(0)    收藏  举报  来源