Java Optional类说明及使用(JDK8)

2023-11-04

Optional类是JDK8提供的类,用于防止出现空指针异常。本篇旨在对该类进行说明及具体使用方式列举。

一、序言

Option在使用中主要是为了简化传统Java的if else形式对null情况进行判断。既然为了简化代码编写,就必须要提到JDK8的Lambda表达式。Lambda表达式是建立在函数式接口(函数式接口由@FunctionalInterface注解标识,接口有且仅有一个抽象方法)上的,具有()->{}的形式的函数表达式,有点类似于JavaScript中ES6的箭头函数形式。其使用场景举例如下:

//遍历Map集合
public static void main(String[] args) {
    Map<String, String> hashMap = new HashMap<>();
    hashMap.put("First", "111");
    hashMap.put("Second", "222");

    // 使用增强for的方式来遍历hashMap
    for (Map.Entry<String, String> entry : hashMap.entrySet()) {
        System.out.println(entry.getKey()+":"+entry.getValue());
    }

    // 使用Lambda表达式的方式来遍历hashMap
    hashMap.forEach((s, s2) -> System.out.println(s + ":" + s2));
}

即通过简洁的函数体形式减少了代码量。

二、Optional

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Optional类说明及使用(JDK8) 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • 【翻译】RFP有什么问题?

    科技行业充斥着首字母缩略词和缩写 有时会引发强烈的反应 RfP这些字母总是让我在黯然神伤和极度沮丧之间摇摆不定 为什么呢 因为征求建议书的过程突出了我们采购和交付软件和基础设施的方式是如何被打破的 从表面上看 传统的提案申请程序是非常合理的
  • 【js】Array.prototype.concat和Array.flat、Array.flatMap的关联使用

    Array prototype concat 用于合并两个或多个数组 返回一个新数组 不改变原数组 const arr1 1 2 3 const arr2 4 5 6 const arr3 7 8 9 const result arr1 c
  • 800个有趣句子帮你记忆7000个单词

    800个有趣句子帮你记忆7000个单词 1 With my ownears I clearly heard the heart beat of the nuclear bomb 我亲耳清楚地听到原子弹的心脏的跳动 2 Next year t
  • JS循环及调试

    break 终止某个循环 使程序跳到循环块外的下一条语句 在循环中位于break后的语句将不再执行 for var i 1 i lt 5 i let num parseInt prompt 输入第 i 人的成绩 if num lt 0 do
  • 基于SpringBoot+Vue框架前后端分离的在线购物平台的设计与实现

    系统合集跳转 一 系统环境 运行环境 最好是java jdk 1 8 我们在这个平台上运行的 其他版本理论上也可以 IDE环境 Eclipse Myeclipse IDEA或者Spring Tool Suite都可以 tomcat环境 To
  • 量化投资学习-34:缺口是制造恐慌和疯狂情绪的手段!

    缺口是制造恐慌和疯狂情绪的手段 发生在不同的阶段 目的是不一样的 底部向下 加速赶底 一般发生了连续下跌的末端 在最后制造疯狂下跌的恐慌 这是筑底的标志 底部向上 借助缺口 实现快速拉升 快速脱离底部成本区 大阳 底部跳空缺口是中级行情开始
  • ts项目打包报错 error TS6504: xxxxxx is a JavaScript file. Did you mean to enable the ‘allowJs‘ option?

    项目vue3 ts 打包时一个组件如下错误 解决 加上lang
  • 毕业设计-基于机器学习的网络舆情情感倾向分析

    目录 前言 课题背景和意义 实现技术思路 一 论坛文本采集方法研究 二 文本情感分析理论 三 论坛文本预处理 四 文本表示及特征抽取 五 情感倾向分类器 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业
  • Java中异常问题(异常抛出后是否继续执行的问题)

    public static void test throws Exception throw new Exception 参数越界 System out println 异常后 编译错误 无法访问的语句 代码2 异常被捕获 日志打印了异常
  • Python Pandas修改列类型

    使用astype如下 df column df column astype type type即int float等类型 示例 import pandas as pd data pd DataFrame 1 2 2 2 data colum
  • vue3 setup 组合式api props父子组件传值详解

    vue3组合式api中 父组件通过在子组件上通过v bind传递给子组件数据 子组件通过defineprops函数在子组件中定义父组件中传入子组件的数据就可以接收这些数据 然后可在template中直接使用 但是想要在setup中使用父组件
  • Python之爬虫 搭建代理ip池

    文章目录 前言 一 User Agent 二 发送请求 三 解析数据 四 构建ip代理池 检测ip是否可用 五 完整代码 总结 前言 在使用爬虫的时候 很多网站都有一定的反爬措施 甚至在爬取大量的数据或者频繁地访问该网站多次时还可能面临ip
  • 前端学习--知识整理

    前端学习 知识整理 一 深 浅拷贝 1 深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的 2 赋值和浅拷贝的区别 3 浅拷贝的实现方式 1 Object assign 2 Array prototype concat 3
  • Ubuntu系统网络连不上&线缆已拔出&服务启动

    解决问题 Ubuntu系统网络连不上 线缆已拔出 服务启动 关于Ubuntu联网失败 最近遇到过多次 但是总结下面前面的解决方法治标不治本 根本原因在于VMware DHCP Service运行状态的问题 之前的解决方法 更改虚拟网络编辑器
  • 【电子DIY】基于NE555制作的简易电子琴

    基于NE555制作的简易电子琴 青岛科技大学 信息科学技术学院 集成162 Listen C 一 背景简介 自多次利用51单片机 无源蜂鸣器制作电子琴多次以后 突然领悟蜂鸣器产生声波的原理 无非是产生一定频率占空比50 的PWM而已 然后
  • 二叉查找树(BST)

    二叉查找树 BST 二叉查找树 Binary Search Tree 又叫二叉排序树 Binary Sort Tree 它是一种数据结构 支持多种动态集合操作 如 Search Insert Delete Minimum 和 Maximum
  • 华为麦芒B199全焦拍照 比单反还有料

    近期 在2000元内价位上涌现了很多表现出色的智能手机 其中不得不提到华为麦芒B199 该机创造了网络平台一分钟售罄10万部的销售神话 到底这部手机有什么神奇之处呢 这里重点介绍下麦芒B199先进的全焦拍照功能 华为麦芒B199 通常 我们
  • vue filters和directives的this指向

    vue filters和directives的this指向 记录一次奇葩的需求 要求自定义一个指令 点击后能跳转指定路由 directives和filters压根就没法访问this 脑袋都想破了 不废话了 上代码
  • 芯片行业常用英文术语最详细总结(图文快速掌握)

    目录 一 简介 二 厂家分类 三 工艺和阶段 3 1 芯片工艺 3 2 芯片阶段 四 晶圆等级 五 其他英文解析 六 相关岗位及职能 一 简介 本文主要总结了半导体行业在工作中常用的英文含义 通过将内容分类 对生产厂家 工艺和阶段 晶圆等级
  • Java Optional类说明及使用(JDK8)

    Optional类是JDK8提供的类 用于防止出现空指针异常 本篇旨在对该类进行说明及具体使用方式列举 一 序言 Option在使用中主要是为了简化传统Java的if else形式对null情况进行判断 既然为了简化代码编写 就必须要提到J