Optional类方法

Optional类

    • 简介
    • 方法
      • empty()方法
      • of(T value)
      • ofNullable(T value)
      • filter(Predicate<? super T> predicate)
      • get()
      • ifPresent(Consumer<? super T> consumer)
      • isPresent()
      • map(Function<? super T,? extends U> mapper)
      • orElse(T other)
      • orElseGet(Supplier<? extends T> other)
      • flatMap(Function<? super T,Optional<U>> mapper)

简介

可能包含或不包含非空值的容器对象。 如果一个值存在, isPresent()将返回true和get()将返回值。 
提供依赖于存在或不存在包含值的其他方法,例如orElse() (如果值不存在则返回默认值)和ifPresent() (如果值存在则执行代码块)

方法

empty()方法

返回一个空的 Optional实例。 
public static void main(String[] args) {Optional<Object> empty = Optional.empty();System.out.println(empty);
}

在这里插入图片描述

of(T value)

返回具有 Optional的当前非空值的Optional。如果传入空值会报空指针异常
public static void main(String[] args) {Optional<Object> empty = Optional.of(new User("John", "12345"));System.out.println(empty);
}

在这里插入图片描述

ofNullable(T value)

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

filter(Predicate<? super T> predicate)

如果一个值存在,并且该值给定的谓词相匹配时,返回一个 Optional描述的值,
否则返回一个空的 Optional 。
public static void main(String[] args) {Optional<User> optional = Optional.of(new User("John", "12345"));System.out.println(optional);Optional<User> user1 = optional.filter(user -> "John".equals(user.getName()));System.out.println(user1);Optional<User> user2 = optional.filter(user -> "Jane".equals(user.getName()));System.out.println(user2);
}

在这里插入图片描述

get()

如果 Optional中有一个值,返回值,否则抛出 NoSuchElementException 
Optional<User> user = Optional.of(new User("John", "123456"));
System.out.println(user.get());
Optional<User> optional = Optional.empty();
System.out.println(optional.get());

在这里插入图片描述

ifPresent(Consumer<? super T> consumer)

如果存在值,则使用该值调用指定的消费者,否则不执行任何操作。
Optional<User> user = Optional.of(new User("John", "123456"));
user.ifPresent(u -> System.out.printf("User name: %s, password: %s", u.getName(), u.getPassword()));
Optional<User> optional = Optional.empty();
optional.ifPresent(u -> System.out.println("User is not present"));

在这里插入图片描述

isPresent()

返回 true如果存在值,否则为 false 。 

map(Function<? super T,? extends U> mapper)

如果存在一个值,则应用提供的映射函数,如果结果不为空,则返回一个 Optional结果的 Optional 。 
Optional<User> user = Optional.of(new User("John", "123456"));
Optional<String> s1 = user.map(User::getName);
System.out.println(s1);
Optional<User> optional = Optional.empty();
Optional<String> s = optional.map(User::getName);
System.out.println(s);

在这里插入图片描述

orElse(T other)

如果Optional容器中无值,则返回other
public static void main(String[] args) {Optional<User> user = Optional.of(new User("John", "123456"));User unknown = user.orElse(new User("Unknown", "000000"));System.out.println(unknown.getName());Optional<User> optional = Optional.empty();User unknown1 = optional.orElse(new User("Unknown", "000000"));System.out.println(unknown1.getName());
}

orElseGet(Supplier<? extends T> other)

返回值(如果存在),否则调用 other并返回该调用的结果。适合需要进行一些操作然后得到值的场景
public static void main(String[] args) {Optional<User> user = Optional.of(new User("John", "123456"));User unknown = user.orElseGet(() -> {User user2 = new User();user2.setName("Unknown2");user2.setPassword("000000");return user2;});System.out.println(unknown.getName());Optional<User> optional = Optional.empty();User unknown2 = optional.orElseGet(() -> {User user2 = new User();user2.setName("Unknown2");user2.setPassword("000000");return user2;});System.out.println(unknown2.getName());
}

在这里插入图片描述

flatMap(Function<? super T,Optional> mapper)

如果一个值存在,应用提供的 Optional映射函数给它,返回该结果,否则返回一个空的 Optional 。 
public static void main(String[] args) {Optional<String> user = Optional.of("John");Optional<User> user1 = user.flatMap(name -> Optional.of(new User(name, "password")));System.out.println(user1.get().getPassword());Optional<String> empty = Optional.empty();Optional<User> password = empty.flatMap(name -> Optional.of(new User(name, "password")));System.out.println(password);
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/366201.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux运维:mysql高级查询语句(2)

目 录 一、创建数据库&#xff1a; 二、创建表结构&#xff1a;DDL 2.1 学生表s&#xff1a; 2.2 成绩表sc&#xff1a; 2.3 课程表c&#xff1a; 三、录入数据&#xff1a;DML 3.1 对学生表s的数据录入&#xff1a; 3.2 对成绩表sc的数据录入&#xff1a; 3.3 对课…

【MySQL】数据库——备份与恢复,日志管理1

一、数据备份的重要性 1.备份的主要目的是灾难恢复 在生产环境中&#xff0c;数据的安全性至关重要 任何数据的丢失都可能产生严重的后果造成数据丢失的原因&#xff1a; 程序错误人为,操作错误运算错误磁盘故障灾难&#xff08;如火灾、地震&#xff09;和盗窃 2.数据库备份…

【云原生】服务网格(Istio)如何简化微服务通信

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、微服务架构的兴起 2、Istio&#xff1a;服务网格的佼…

AI绘画Stable Diffusion 超强一键去除图片中的物体,免费使用!

大家好&#xff0c;我是设计师阿威 在生成图像时总有一些不完美的小瑕疵&#xff0c;比如多余的物体或碍眼的水印&#xff0c;它们破坏了图片的美感。但别担心&#xff0c;今天我们将介绍一款神奇的工具——sd-webui-cleaner&#xff0c;它可以帮助我们使用Stable Diffusion轻…

音乐:触动心灵的艺术语言

Enjoy your music 音 乐 作为一种跨越时空和文化的艺术形式&#xff0c;拥有着无穷的魅力和力量。 它不仅能够带给我们愉悦的听觉享受&#xff0c;还对我们的身心健康、认知发展和社会交往产生着深远的影响。 一、音乐的基本元素 音乐由多个基本元素构成&#xff0c;包括…

python-逻辑语句

if else语句 不同于C&#xff1a;else if range语句&#xff1a; continue continue的作用是&#xff1a; 中断所在循环的当次执行&#xff0c;直接进入下一次 continue在嵌套循环中的应用 break 直接结束所在的循环 break在嵌套循环中的应用 continue和break&#xff0c;在…

SAP AFAB 资产过账如何查看配置的对应的会计科目

首先查看资产AS03 科目定位码 T004 然后去找对应的科目 AO93

绘唐3一键追爆款文刻创作聚星文社

聚星文社是一个中国的文学社交平台&#xff0c;提供了一个让作家和读者相互交流和分享作品的平台。 在聚星文社&#xff0c;作家可以在平台上发布自己的作品&#xff0c;获得读者的阅读和评论&#xff0c;同时也可以与其他作家进行交流与学习。 点击下载即可 读者可以在平台上…

Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单

文章目录 一、SSO介绍1、使用SSO的好处 二、中间件介绍1、Express安装导入使用 2、cors安装导入配置 3、express-session安装导入配置使用 4、jsonwebtoken安装导入使用 5、jwt和session对比 三、SSO实现方案1、安装依赖2、结构3、实现原理 四、示例代码1、nodejs端 server/ind…

如何在AWS上使用免费的服务器

要在AWS上免费使用的服务器&#xff0c;你可以按照以下步骤操作&#xff1a; &#xff08;1&#xff09;注册AWS账户&#xff1a; 访问AWS官方网站&#xff08;https://aws.amazon.com/cn/&#xff09;&#xff0c;点击右上角的“完成注册”&#xff0c;按照页面提示填写相关…

谷粒商城篇章10 -- P262-P291/P295-P310 -- 订单服务(支付)【分布式高级篇七】

目录 1 页面环境搭建 1.1 静态资源上传到nginx 1.2 SwitchHosts增加配置 1.3 网关配置 1.4 订单模块基础配置 1.4.1 引入 thymeleaf 依赖 1.4.2 application.yml配置 1.4.3 bootstrap.properties配置 1.4.4 开启nacos注册发现和远程调用 1.5 修改各个页面的静态资源路…

配电房挂轨巡检机器人

配电房作为电网中的重要组成部分。其运行的的安全和稳定性直接影响到电力供应的质量。然而&#xff0c;传统的人工巡检模式存在诸多弊端&#xff0c;例如巡检效率低下、人员安全难以保障、巡检结果主观性强等问题。为了解决这些问题&#xff0c;旗晟机器人推出B3系列升降云台轨…

mst[讲课留档]

最小生成树(Minimum Spanning Tree) (1)概念 我们知道&#xff0c;树是有 n n n个结点&#xff0c; n − 1 n-1 n−1条边的无向无环的连通图。 一个连通图的生成树是一个极小的连通子图&#xff0c;它包含图中全部的 n n n个顶点&#xff0c;但只有构成一棵树的 n − 1 n-1 …

【C++】C++指针在线程中调用与受保护内存空间读取方法

引言 在C的多线程编程中&#xff0c;正确地管理内存和同步访问是确保程序稳定性和安全性的关键。特别是当涉及到指针在线程中的调用时&#xff0c;对受保护内存空间的访问必须谨慎处理&#xff0c;以防止数据竞争、死锁和内存损坏等问题。本文将详细探讨C指针在线程中调用时如何…

【stm32】大一上学期笔记复制

砌墙单片机 外设是什么&#xff1f; ipage 8 nx轴 128 X0-127 y0-63 PWM脉冲宽度调制 PWM脉冲宽度调制 2023年10月13日 基本特性&#xff1a;脉冲宽度调制PWM是一种对模拟信号进行数字编码的方法。广泛引用于电机控制&#xff0c;灯光的亮度调节&#xff0c;功率控制等领域…

人工智能--目标检测

欢迎来到 Papicatch的博客 文章目录 &#x1f349;引言 &#x1f349;概述 &#x1f348;目标检测的主要流程通常包括以下几个步骤 &#x1f34d;数据采集 &#x1f34d;数据预处理 &#x1f34d;特征提取 &#x1f34d;目标定位 &#x1f34d;目标分类 &#x1f348;…

调度器APScheduler定时执行任务

APScheduler&#xff08;Advanced Python Scheduler&#xff09;是一个Python库&#xff0c;用于调度任务&#xff0c;使其在预定的时间间隔或特定时间点执行。它支持多种调度方式&#xff0c;包括定时&#xff08;interval&#xff09;、日期&#xff08;date&#xff09;和Cr…

使用Git从Github上克隆仓库,修改并提交修改

前言 本次任务主要是进行github提交修改的操作练习实践&#xff0c;本文章是对实践过程以及遇到的问题进行的一个记录。 在此之前&#xff0c;我已经简单使用过github&#xff0c;Git之前已经下好了&#xff0c;所以就省略一些步骤。 步骤记录 注册github账号&#xff0c;gi…

C++ | Leetcode C++题解之第208题实现Trie(前缀树)

题目&#xff1a; 题解&#xff1a; class Trie { private:vector<Trie*> children;bool isEnd;Trie* searchPrefix(string prefix) {Trie* node this;for (char ch : prefix) {ch - a;if (node->children[ch] nullptr) {return nullptr;}node node->children[…

华为OD机试 - 表演赛游戏分组 - 动态规划(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;D卷C卷A卷B卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测…