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()不能为nullOptional<String> optional1 = Optional.of("abc");//2 如果传值为空,返回一个空的Optional对象Optional<String> optional2 = Optional.ofNullable(null);//3返回一个空的Optional对象Optional<String> optional3 = Optional.empty();//如果有值返回true,没有返回falseSystem.out.println(optional1.isPresent());// 如果有值将其返回,否则抛出NoSuchElementExceptionSystem.out.println(optional1.get());// 如果有值就打印optional1.ifPresent(System.out::println);// 有值就返回,没有就返回你指定的值System.out.println(optional2.orElse("无值"));// 有值就返回,没值打印defaultString 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"));}
}
Optional容器类相关推荐
- Java8新特性【函数式编程API、新时间日期处理API、Optional容器类】总结
文章目录 1.Lambda表达式 1.1什么是Lambda表达式 1.2从匿名类到 Lambda 的转换 1.3Lambda表达式语法 2.函数式接口 2.1什么是函数式接口 2.2自定义函数式接口 ...
- Java8——Optional容器类
Optional容器类 Optional<T> 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optiona ...
- Java8新特性——Optional容器类的简单应用
1.Optional容器类 Optional<T> 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Option ...
- 【Java8新特性 串行/并行流-Optional容器类-时间格式化线程安全等】
Java8新特性二 一.并行流与顺序流 1.概念 2.Fork/Join框架 3. Fork/Join框架代码示例: 二.Optional类 1. 什么是Optional对象 2. Optional类 ...
- 快速学习Java8新特性第七讲——Optional类
在<快速学习Java8新特性第五讲--强大的Stream API>这一讲中,我就已经提及到了Optional类.在这一讲中,我将对其做一个更加细致的讲解. Optional类是什么? Op ...
- optional说明
1.说明 public final class Optional<T> extends Object 可能包含或不包含非空值的容器对象. 如果一个值存在, isPresent()将返回tr ...
- Java Optional容器判空处理
Java Optional容器判空处理 1. Java判空概述 2. Java判空方式 2.1 普通判空方式 2.2 Optional判空方式 1. Java判空概述 Java判空方式有很多多,可以i ...
- java8新特性【Lambda、Stream API、Optional、Date Time API 、并行流与串行流】
文章目录 Lambda 表达式 Lambda 表达式的基础语法 方法引用 Lambda 表达式需要"函数式接口"的支持 Java8 内置的四大核心函数式接口 Stream API ...
- 【JDK8语法新特性】:超全总结{lamda,stream,optional,新日期类API},JDK8对策略模式支持,可以直接贴代码运行测试。
文章目录 Java8新特性 速度快 代码更少(增加了新的语法,lamda表达式)(主要) 强大的Stream API(主要) 便于并行 最大减少空指针异常(Optional API) 提供了线程安全的 ...
- 【JVM】肝了一周,吐血整理出这份超硬核的JVM笔记(升级版)!!
JDK 是什么? JDK 是用于支持 Java 程序开发的最小环境. Java 程序设计语言 Java 虚拟机 Java API类库 JRE 是什么? JRE 是支持 Java 程序运行的标准环境. ...
最新文章
- 中国科协发布 2021 开源创新榜,阿里巴巴 2 大开源社区、5 大开源项目上榜
- 单向链表的C语言实现与基本操作
- C语言中main函数的研究,以及对代码断点调试的研究(王爽老师 汇编语言)
- python获取文件字节数_python关于文件操作中的字符个数和字节数
- 简单排序--插入排序
- 论文浅尝 | 面向时序知识图谱推理的循环事件网络
- docker重启后容器消失_docker设置固定ip地址
- Java中这7个方法,一不小心就用错了!
- USACO12FEB Nearby Cows
- USACO / Factorials (简单模拟)
- 9月29日见?华为nova 9系列配置细节曝光:最高支持100W快充
- linux的RPM支持图片格式,Linux下rpm、yum和源码三种安装方式详细介绍
- 有了linux基础还学习学哪些,学linux的前途和好处有哪些
- 一种标准地图服务转矢量Shapefile方法
- NET Reflector 7.6.1.824安装及破解
- 山水之道第四境——精灵的飞天之舞
- 一分钟一个Pandas小技巧(一)
- springsecurity整合jwt实现授权认证,权限分配
- 【量化策略】横盘策略20211209
- 智能数显+过载报警,一个给你满满安全感的桌面PDU