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 @   JamieChyi  阅读(9)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示