首页 > 其他分享 >Optional 教程

Optional 教程

时间:2023-06-20 15:23:22浏览次数:30  
标签:教程 isPresent Optional student1 ofNullable Student optional

1、isPresent

使用isPresent方法来判断非空,isPresent相当于!=null
isPresent 返回一个boolean

Optional<Student> optional = Optional.ofNullable(new Student("王五", 80));
        if (optional.isPresent()){
            // 将输出:student1不为空的操作
            System.out.println("student不为空");
        } else {
            System.out.println("student is 空");
        }

2、ifPresent

ifPresent 相当于相判断 !=null,不为空才执行里面的代码:

 Optional<Student> optional = Optional.ofNullable(new Student("王五", 80));
 optional.ifPresent(student -> System.out.println("学生姓名:"+ student.getName()));

3、获取数据

  1. get 如果为空会抛出NoSuchElementException异常,使用前 isPresent
  2. orElse 接受T类型的参数
  3. orElseGet 接收Supplier类型的参数
// optional不为空则返回student1给 student3,否则返回student2给student3
Student student1 = new Student("王五", 80);
Student student2 = new Student("张三", 90);
Optional<Student> optional = Optional.ofNullable(student1);
Student student3 = optional.orElseGet(()->student2)

4、map

map将谓词作为参数并返回一个Optional对象

List<String> companyNames = Arrays.asList("paypal", "oracle", "", "microsoft", "", "apple");
Optional<List<String>> listOptional = Optional.of(companyNames);
//获取companyNames的长度
int size = listOptional.map(List::size).orElse(0);
System.out.println(size);//6

获取学生名称大写

 Student student1 = new Student("aaa", 80);
 String stName = Optional.ofNullable(student1).map(s -> s.getName().toUpperCase()).orElse(null);

5、filter

filter 将谓词作为参数并返回一个Optional对象

Integer year = 2022;
boolean is2022 = Optional.ofNullable(year).filter(y -> y == 2022).isPresent();
System.out.println(is2022);//true

双重判断
判断价格是否在在10到15

Optional.ofNullable(modem)
                .map(Modem::getPrice)
                .filter(p -> p >= 10)
                .filter(p -> p <= 15)
                .isPresent();

标签:教程,isPresent,Optional,student1,ofNullable,Student,optional
From: https://www.cnblogs.com/cherychina/p/17493719.html

相关文章

  • 消除if else & Optional 使用
    1、三目表达式获取对象的属性,判断对象是否为空,为空返回默认值Cc=newC("c");Stringname=c!=null?c.getName():DEFAULT_NAME;2、判断不为空再赋值Useruser=userDao.getUser(id);if(user!=null){user.setName("张三");}//使用OptionalOptional.ofN......
  • 迅为视频 | RKNPU2 从入门到实践RK3568/RK3568开发板教程
     迅为基于瑞芯微RK3568和RK3588处理器设计开发的两款开发板都自带NPU,RK3568自带1T算力的NPU、RK3588自带6T算力的NPU,且这两款开发板使用的都是RKNPU2。    (RKNPU发展历程) RKNPU2较RKNPU1有较大的提升,但市面上关于这方面的资料却寥寥无几,导致很多想学习这方面知识的小......
  • 软件测试|数据处理神器pandas教程(五)
    前言上一篇文章我们介绍了pandas读写CSV文件的有关方法,本篇文章我们介绍pandas读取JSON文件的方法。pandas同样可以很方便地处理JSON文件。获取更多免费资料,请点击!关于jsonJSON(JavaScriptObjectNotation,JavaScript对象表示法),是存储和交换文本信息的语法,类似XML,但是JSON......
  • 软件测试|数据处理神器pandas教程(六)
    前言之前我们介绍了pandas读写csv文件,json文件,本篇文章我们来介绍一下pandas读写Excel文件。获取更多免费技术资料,请点击!关于ExcelExcel是由微软公司开发的办公软件之一,它在日常工作中得到了广泛的应用。在数据量较少的情况下,Excel对于数据的处理、分析、可视化有其独特的......
  • 软件测试|数据处理神器pandas教程(七)
    前言当进行数据分析时,我们会遇到很多带有日期、时间格式的数据集,在处理这些数据集时,可能会遇到日期格式不统一的问题,此时就需要对日期时间做统一的格式化处理。比如“Friday,March24,2023”可以写成“24/3/23”,或者写成“03-24-2023”。获取更多免费技术资料,请点击!日期格式......
  • Windows 2008服务器多界面和IIS的安装教程 140.210.16.x
    当你在使用服务器时是否有遇到这样一个问题?当你正在服务器里进行工作时,突然一个小伙伴在没有告知你的情况下进入了服务器里,导致你服务器失去连接了,这种情况是非常常见的现象。主要原因就是因为服务器没有安装多界面,服务器多开界面是占用的同一台服务器的资源,服务器多开数量没有限制......
  • 【计算机网络教程】数据链路层
    数据链路层知识点思维导图汇总如下:......
  • 【计算机网络教程】重点汇总
    计网重点汇总文章目录计网重点汇总1.各层重点及协议汇总1.1物理层1.1.1常见编码1.1.2信噪比1.1.3码分复用(CDM)1.2数据链路层1.2.1差错检验(CRC)1.2.2载波监听多址接入/碰撞检验(CSMA/CD)1.2.3点对点协议(PPP)1.3网络层1.3.1网际协议(IP)1.3.2地址解析协议(ARP)1.3.3内部网关协议......
  • 【实用软件测试教程】6-功能测试
    文章目录6功能测试6.1系统测试概论6.2功能测试概述6.3功能测试的策略6.4功能测试的内容6.5功能测试的方法6.6.QuickTestProfessional(QTP)6功能测试功能模块是系统测试阶段的重点内容,软件系统开发的首要目标是确保功能正确。功能测试主要是根据软件系统的特征、操作描述和......
  • 【保姆级教程】Vue项目调试技巧
    前言在Vue项目开发过程中,当遇到应用逻辑出现错误,但又无法准确定位的时候,知晓Vue项目调试技巧至关重要,debug是必备技能。同后台项目开发一样,可以在JS实现的应用逻辑中设置断点,并进行单步、进入方法内、跳出方法等调试,从而准确定位问题根源。本文主要讲解针对Vue项目进行调试的3......