首页 > 编程语言 >《Java核心技术II》用flatMap构建Optional值的函数

《Java核心技术II》用flatMap构建Optional值的函数

时间:2025-01-06 09:29:16浏览次数:3  
标签:flatMap inverse Java II static result Optional public

用flatMap构建Optional值的函数

假设你有一个可以产生Optional对象的方法f,并且目标T具有一个产生Optional对象的方法g。

都是普通方法,可以通过调用s.f().g()将它们组合起来。这种组合无法工作,s.f()是Optional而不是T.

需要调用:

Optional result = s.f().flatMap(T::g);

s.f()存在可以应用到g上,否则返回空Optional

flatMap案例
package streams.optional;

import java.util.Optional;

public class OptionalFlatMap {

    public static void main(String[] args) {
        Optional<Double> result = inverse(0.25).flatMap(OptionalFlatMap::squareRoot);
        System.out.println(result);
    }

    public static Optional<Double> squareRoot(Double x){
        return x<0?Optional.empty():Optional.of(Math.sqrt(x));
    }
    
    public static Optional<Double> inverse(Double x){
        return x==0?Optional.empty():Optional.of(1/x);
    }
}

标签:flatMap,inverse,Java,II,static,result,Optional,public
From: https://blog.csdn.net/qq_36324341/article/details/144955987

相关文章

  • 1651. Hopper 公司查询 III - 力扣(LeetCode)
    1651.Hopper公司查询III-力扣(LeetCode)目标输入表:AcceptedRidesride_iduser_idrequested_at6752019/12/91542020/2/910632020/3/419392020/4/63412020/6/313522020/6/227692020/7/1617702020/8/2520812020/11/25572020/11/92422020/12/911682021/1/1115322021/1/1712......
  • 1645. Hopper 公司查询 II - 力扣(LeetCode)
    1645.Hopper公司查询II-力扣(LeetCode)目标输入表Rides:ride_iduser_idrequested_at6752019/12/91542020/2/910632020/3/419392020/4/63412020/6/313522020/6/227692020/7/1617702020/8/2520812020/11/25572020/11/92422020/12/911682021/1/1115322021/1/1712112021/......
  • 26.Java Lock 接口(synchronized 关键字回顾、可重入锁快速入门、Lock 对比 synchroniz
    一、synchronized关键字1、synchronized关键字回顾synchronized是Java中的关键字,是一种同步锁,它修饰的对象有以下几种修饰一个类:其作用的范围是synchronized后面括号括起来的部分,作用的对象是这个类的所有对象修饰一个方法:被修饰的方法称为同步方法,其作用的范......
  • 基于java的SpringBoot/SSM+Vue+uniapp的德云社票务系统的详细设计和实现(源码+lw+部署
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • java学习总结
    叶金祥202302151832第一章:初识Java与面向对象程序设计•核心概念与知识点•Java简介:Java是一种广泛使用的编程语言,具有跨平台性、面向对象、泛型编程等特性。•Java开发环境:包括JDK(JavaDevelopmentKit)、IDE(如Eclipse、IntelliJIDEA)等。•面向对象程序设计(OOP):OOP是一......
  • java ssm基于Android的远程家庭健康监测管理系统uniapp(源码+文档+运行视频+讲解视频)
     文章目录系列文章目录前言一、开发介绍二、详细视频演示三、项目部分实现截图四、uniapp介绍五、系统测试六、代码参考源码获取目的摘要:基于JavaSSM和Android的远程家庭健康监测管理系统为家庭健康管理带来了新的方式。该系统借助UniApp实现多平台使用,方便......
  • 基于java和微信小程序实现桃源婚恋交友系统项目【附项目源码+论文说明】
    基于java和微信小程序实现桃源婚恋交友系统演示【内附项目源码+LW说明】摘要随着信息技术的发展,带动了各种管理系统和应用软件的产生,其中婚恋交友系统就是其中之一。每一个人都会经历过学习、恋爱、婚姻的过程,大龄青年也越来越多,大家都忙于学习或者工作,失去了许多机会。而......
  • 基于java和微信小程序实现校园通知小程序系统项目【附项目源码+论文说明】
    基于java和微信小程序实现校园通知系统演示【内附项目源码+LW说明】摘要随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作、生活不可或缺的工具。在高校,各种管理系统层出不穷,为校园通知管理开发必要的系统,能够有效的提升管理效率。一直以来,校园通......
  • 基于Java中的SSM框架实现医药进出口交易系统项目【项目源码+论文说明】
    摘要首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计......
  • 基于Java中的SSM框架实现医院门诊互联电子病历管理信息系统项目【项目源码+论文说明】
    摘要网络的广泛应用给生活带来了十分的便利。所以把医院门诊互联电子病历管理与现在网络相结合,利用java技术建设医院门诊互联电子病历管理信息系统,实现医院门诊互联电子病历的信息化。则对于进一步提高医院门诊互联电子病历管理发展,对医院门诊互联电子病历管理系统能起到不少......