栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jdk11的java.util.Optional使用示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jdk11的java.util.Optional使用示例

jdk11的java.util.Optional使用示例

网上的Optional大多是关于jdk8的,但是在jdk9,Optional新增了很多方法,以下写一些代码示例进行记录。Optional是一个对对象进行判空操作,比较操作的工具类,

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional;
import java.util.stream.Stream;


public class TestOptional {
    public static void main(String[] args) {
        List integers = Arrays.asList(1, 2, 3, 4, 5, 6);
        Optional> op = Optional.of(integers);
        //判断传入的对象是否为空
        System.out.println("value是否为空:" + op.isPresent());
        //filter操作,对对象进行过滤操作
        boolean isPersent = op.filter(value -> {
            if (value.size() > 7)
                return true;
            else
                return false;
        }).isPresent();
        System.out.println("过滤之后value是否为空:" + isPersent);
        //ifPresent(),如果对象为不空,则执行lambda的操作
        op.ifPresent(value -> {
            Iterator it = value.iterator();
            while (it.hasNext()) {
                System.out.println(it.next() + 1);
            }
        });
        //创建一个空的optional
        op = Optional.empty();
        op.ifPresentOrElse(value -> {
            Iterator it = value.iterator();
            while (it.hasNext()) {
                System.out.println(it.next() + 1);
            }
        }, () -> {
            throw new NoSuchElementException("元素为空");
        });
        System.out.println("optional是否为空:" + op.isEmpty());
        //元素为空就返回传入的值,不为空就返回自己
        System.out.println("------------");
        System.out.println("orElse相关操作");
        List integers1 = op.orElse(integers);
        op=Optional.of(integers);
        //equals方法的使用示例
        System.out.println("op为空的时候orElse返回的值是不是传入的值:" + op.equals(integers1));

        //ofNullable方法的使用示例
        op = Optional.ofNullable(null);
        //or操作,如果value为空则执行lambda的操作返回一个optional
        op.or(()->{
            return Optional.empty();
        });
        //为空就执行lambda表达式返回一个值,否则就返回自己
        op.orElseGet(() -> {
            return integers;
        });
        //为空抛出错误
        List integers2 = op.orElseThrow();
        //为空抛出指定错误
        List integers3 = op.orElseThrow(() -> {
            throw new NoSuchElementException("没得嘞个元素得!");
        });
        //使用元素构造构造一个stream
        Stream> stream = op.stream();
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337705.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号