Java8 新特性 记录【持续更新】

目录

[一、Stream 相关](#一、Stream 相关)

[1、findFirst 方法](#1、findFirst 方法)

二、Optional

1、如何构造Optional

[2、ifPresent 方法](#2、ifPresent 方法)


一、Stream 相关

1、findFirst 方法

Stream的findFirst方法在此流中查找第一个元素作为Optional。

如果流中没有元素,findFirst返回空的Optional。

如果流没有顺序,那么findFirst可以选择任何元素。

如果findFirst选择的元素为null,它将抛出NullPointerException。

二、Optional

JDK 1.8加入了 Optional 类。用于避免用if判空时出现空指针异常,它就是一个包裹着对象的容器。如果值存在则 isPresent()方法会返回 true,调用 get() 方法会返回该对象。

1、如何构造Optional

JDK 提供三个静态方法来构造一个 Optional:

  1. Optional.of(T value) 该方法通过一个非 null 的 value 来构造一个 Optional,返回的 Optional 包含了 value 这个值。对于该方法,传入的参数一定不能为 null,否则便会抛出 NullPointerException。

  2. Optional.ofNullable(T value) 该方法和 of 方法的区别在于,传入的参数可以为 null,进行三目运算,判断传入的参数是否为 null,如果为 null 的话,返回的就是 Optional.empty()。

  3. Optional.empty()该方法用来构造一个空的 Optional,即该 Optional 中不包含值 ------ 其实底层实现还是 如果 Optional 中的 value 为 null 则该 Optional 为不包含值的状态,然后在 API 层面将 Optional 表现的不能包含 null 值,使得 Optional 只存在 包含值 和 不包含值 两种状态。

2、ifPresent 方法

如果 Optional 中有值,则对该值调用 consumer.accept,否则什么也不做。

相关推荐
郝学胜-神的一滴18 小时前
[力扣 227] 双栈妙解表达式计算:从思维逻辑到C++实战,吃透反向波兰式底层原理
java·前端·数据结构·c++·算法
aq553560018 小时前
数字资源分发的技术革命与未来趋势
java·开发语言·python·php
蚰蜒螟18 小时前
深度剖析:从 clone3 到 start_routine —— Linux 新线程的“破茧成蝶”之旅
java·linux·运维
派大星酷18 小时前
MCP 工具介绍及编写指南
java·人工智能
梦想的旅途218 小时前
解构自动化办公新思路:实现外部群聊能力的深度集成与交互
java·数据库·rpa
启山智软18 小时前
企业如何选择适合自己的电商系统技术架构?(实操落地版)
java·spring·架构·开源·商城开发
invicinble18 小时前
对于java基础
java·开发语言
knight_9___18 小时前
RAG面试篇9
java·人工智能·python·算法·agent·rag
石榴树下的七彩鱼18 小时前
智能抠图API怎么选?AI抠图多语言接入实战(Python/Java/PHP/JS完整教程)
java·python·智能抠图·ai抠图·api接入·图片去背景·电商工具
逻辑驱动的ken18 小时前
Java高频面试考点场景题13
java·开发语言·jvm·面试·求职招聘·春招