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容器类相关推荐

  1. Java8新特性【函数式编程API、新时间日期处理API、Optional容器类】总结

    文章目录 1.Lambda表达式 1.1什么是Lambda表达式 1.2从匿名类到 Lambda 的转换 1.3Lambda表达式语法 2.函数式接口 2.1什么是函数式接口 2.2自定义函数式接口 ...

  2. Java8——Optional容器类

    Optional容器类  Optional<T> 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optiona ...

  3. Java8新特性——Optional容器类的简单应用

    1.Optional容器类 Optional<T> 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Option ...

  4. 【Java8新特性 串行/并行流-Optional容器类-时间格式化线程安全等】

    Java8新特性二 一.并行流与顺序流 1.概念 2.Fork/Join框架 3. Fork/Join框架代码示例: 二.Optional类 1. 什么是Optional对象 2. Optional类 ...

  5. 快速学习Java8新特性第七讲——Optional类

    在<快速学习Java8新特性第五讲--强大的Stream API>这一讲中,我就已经提及到了Optional类.在这一讲中,我将对其做一个更加细致的讲解. Optional类是什么? Op ...

  6. optional说明

    1.说明 public final class Optional<T> extends Object 可能包含或不包含非空值的容器对象. 如果一个值存在, isPresent()将返回tr ...

  7. Java Optional容器判空处理

    Java Optional容器判空处理 1. Java判空概述 2. Java判空方式 2.1 普通判空方式 2.2 Optional判空方式 1. Java判空概述 Java判空方式有很多多,可以i ...

  8. java8新特性【Lambda、Stream API、Optional、Date Time API 、并行流与串行流】

    文章目录 Lambda 表达式 Lambda 表达式的基础语法 方法引用 Lambda 表达式需要"函数式接口"的支持 Java8 内置的四大核心函数式接口 Stream API ...

  9. 【JDK8语法新特性】:超全总结{lamda,stream,optional,新日期类API},JDK8对策略模式支持,可以直接贴代码运行测试。

    文章目录 Java8新特性 速度快 代码更少(增加了新的语法,lamda表达式)(主要) 强大的Stream API(主要) 便于并行 最大减少空指针异常(Optional API) 提供了线程安全的 ...

  10. 【JVM】肝了一周,吐血整理出这份超硬核的JVM笔记(升级版)!!

    JDK 是什么? JDK 是用于支持 Java 程序开发的最小环境. Java 程序设计语言 Java 虚拟机 Java API类库 JRE 是什么? JRE 是支持 Java 程序运行的标准环境. ...

最新文章

  1. 中国科协发布 2021 开源创新榜,阿里巴巴 2 大开源社区、5 大开源项目上榜
  2. 单向链表的C语言实现与基本操作
  3. C语言中main函数的研究,以及对代码断点调试的研究(王爽老师 汇编语言)
  4. python获取文件字节数_python关于文件操作中的字符个数和字节数
  5. 简单排序--插入排序
  6. 论文浅尝 | 面向时序知识图谱推理的循环事件网络
  7. docker重启后容器消失_docker设置固定ip地址
  8. Java中这7个方法,一不小心就用错了!
  9. USACO12FEB Nearby Cows
  10. USACO / Factorials (简单模拟)
  11. 9月29日见?华为nova 9系列配置细节曝光:最高支持100W快充
  12. linux的RPM支持图片格式,Linux下rpm、yum和源码三种安装方式详细介绍
  13. 有了linux基础还学习学哪些,学linux的前途和好处有哪些
  14. 一种标准地图服务转矢量Shapefile方法
  15. NET Reflector 7.6.1.824安装及破解
  16. 山水之道第四境——精灵的飞天之舞
  17. 一分钟一个Pandas小技巧(一)
  18. springsecurity整合jwt实现授权认证,权限分配
  19. 【量化策略】横盘策略20211209
  20. 智能数显+过载报警,一个给你满满安全感的桌面PDU

热门文章

  1. ASP.NET 创建网站地图
  2. java8实现Joiner:数组集合转换字符串
  3. JPA-update方法使用踩坑记
  4. 学习J2ME需要掌握的七种技术
  5. 智慧城市热度不减 产业资本进军智能汽车相关领域
  6. 一步完成 MySQL 向 Redis 迁移
  7. nginx平滑重启与平滑升级的方法
  8. Conditional GET Request(缓存协商)
  9. RedHat 企业版5下系统故障恢复
  10. Spring 4.xx开发环境搭建