1、Optional对象的创建

创建空的Optional,Optional<T> optT = Optional.empty(),其中T为需要创建的类型,根据实际需要填写

创建非空值的Optional.Optional<T> opt = Optional.of(val)

创建允许非空值的Optional.Optinal<T> optT = Optional.ofNullable(val)

2、从Optional中提取和转换值

对于转换值返回值是非Optional的,使用OptionalObject.map(Function),其中Fucntion的返回值是非Optional类型的

对于转换值返回值为Optional的,使用OptionalObject.flatMap(Function)

3、默认行为及解引用Optional对象

(1)orElse(T other)在对象不包含时提供一个默认值

(2)orElseGet(Supplier<? extends T> other)在对象不包含值时,Supplier才会调用

(3)orElseThrow(Supplier<? extends X> exceptionSupplier)在对象不包含值时,执行异常提供者

(4)ifPresent(Consumer<? superT> consumer)在对象包含的值存在时,执行一个作为参数传入的方法,否则 不执行任何操作

(5)get()值存在直接返回变量的值,否则抛出NoSuchElementException异常

4、剔除值

使用filter(Predicate<? super T> predicate),如果对象不包含值,不作处理。如果对象的值满足的条件,返回自身,否则返回空的Optional

java8中Optional的使用相关推荐

  1. Java8中Optional的基础使用和实践

    说明 首先我们来看一下Optional的作者 Brian Goetz 对这个 API 的说明: Our intention was to provide a limited mechanism for ...

  2. 教你怎么样在 Java8 中优雅的避开空指针异常

    2019独角兽企业重金招聘Python工程师标准>>> 要说 Java 编程中哪个异常是你印象最深刻的,那 NullPointerException 空指针可以说是臭名昭著的.不要说 ...

  3. Java8中的流操作-基本使用性能测试

    一.流(Stream)简介 流是 Java8 中 API 的新成员,它允许你以声明式的方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).这有点儿像是我们操作数据库一样,例如我想要查询出热 ...

  4. 你还在Java8中使用循环语句吗?

    转载自   你还在Java8中使用循环语句吗? Java 8中的新功能特性改变了游戏规则.对Java开发者来说这是一个全新的世界,并且是时候去适应它了. 在这篇文章里,我们将会去了解传统循环的一些替代 ...

  5. Java8中的Stream

    Java8 Stream是一个非常好用的工具,结合Lambda表达式,可以非常方便的来操作各种集合. 文章目录 Stream知识图谱 Stream概述 Stream的创建 Stream的使用 遍历/匹 ...

  6. java8中的Stream用法详解

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 1.为什么java8中加入Stream ...

  7. 了解Java8中的parallelStream

    about Stream 什么是流? Stream是java8中新增加的一个特性,被java猿统称为流. Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版 ...

  8. java8中的Collectors.groupingBy用法

    Collectors.groupingBy根据一个或多个属性对集合中的项目进行分组 数据准备: public Product(Long id, Integer num, BigDecimal pric ...

  9. java8中 Collectors.groupingBy用法

    目录 1.数据准备: 2.分组 按照类目分组: 按照几个属性拼接分组: 根据不同条件分组 3.多级分组 4.按子组收集数据 求总数 求和 把收集器的结果转换为另一种类型 联合其他收集器 Collect ...

最新文章

  1. 一个用微软官方的OpenXml读写Excel 目前网上不太普及的方法。
  2. 关于Crypto.PublicKey.RSA,在generate后无法被赋值问题
  3. python学习教程,12306火车票抢票系统
  4. Linux中的防火墙----iptables
  5. [蓝桥杯][算法训练]K好数(动态规划)
  6. Java枚举根据key获取value
  7. jdkjmeter安装与环境变量配置
  8. 【配置】Spring Struts配置信息
  9. 目标检测YOLO V5 C++版本
  10. ios中input输入无效
  11. linux校园网自动登录命令,东北大学校园网登录登出shell脚本
  12. OpenStack 运维 - 环境部署 | 报错排查 [T版]
  13. ps裁剪和裁切的区别_PS裁剪和裁切的区别
  14. “职”等你来!阿里云2020年专场招聘来了
  15. 单利模式的优缺点和使用场景
  16. LeetCode:14. Longest Commen Prefix(Easy)
  17. 【RAC】如何修改SCAN IP的IP地址、名称、端口等信息
  18. [GIS教程] 5.1 空间数据库 - 空间数据仓库 - SQL/扩展SQL - 空间索引
  19. 探讨read的返回值的三种情况
  20. 避免 IoT 物联网项目走向失败的 6 大技巧

热门文章

  1. nagios 监控shell脚本
  2. react编译器jsxTransformer,babel
  3. 转载-隐藏在手机中的第二个操作系统
  4. JavaScript学习总结二:js闭包(Closure)概念
  5. php恶意代码,警惕WordPress主题functions.php包含的恶意代码
  6. monty python喜剧-50大最搞笑喜剧片,无厘头成必杀技!
  7. python怎么导入视频-Python模块导入详解
  8. python编程案例教程课后答案-Python编程练习题学习汇总
  9. python入门教程非常详细-Python该怎么入门?Python入门教程(非常详细)
  10. python基础教程多少钱-厦门厦禾路Python基础教程培训费用多少-泰兴市新闻