Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >hutool的Opt工具类,非空判断

hutool的Opt工具类,非空判断

作者头像
倾盖
发布于 2022-08-16 06:29:55
发布于 2022-08-16 06:29:55
2.8K00
代码可运行
举报
文章被收录于专栏:RivenCabinRivenCabin
运行总次数:0
代码可运行

一、Hutool🐂🍺:Opt (hutool-码云(gitee.com))

二、我的demo

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
    void testHutool() {
        List<String> objects = new ArrayList<>();

        /*
         * 为空的情况
         * */
        System.out.println("\n\n\n为空的情况==================================");
        System.out.println("Opt.empty() = " + Opt.empty());
        System.out.println("Opt.of(objects) = " + Opt.of(objects));
        System.out.println("Opt.ofNullable(objects) = " + Opt.ofNullable(objects));
        System.out.println("Opt.ofBlankAble(objects) = " + Opt.ofBlankAble(objects));
        System.out.println("Opt.ofEmptyAble(objects) = " + Opt.ofEmptyAble(objects));
        System.out.println("objects.isEmpty() = " + objects.isEmpty());
        Opt.ofEmptyAble(objects).ifPresent(strings -> System.out.println("strings = " + strings));
        Opt.ofEmptyAble(objects).ifPresentOrElse(Console::log, () -> Console.error("传入的值不存在呢"));
        System.out.println("Opt.ofEmptyAble(objects).filter(strings -> strings.size() > 10) = " + Opt.ofEmptyAble(objects).filter(strings -> strings.size() > 10));
        Opt.ofEmptyAble(objects).peek(System.out::println);
        Opt.ofEmptyAble(objects).peeks(strings -> System.out.println("strings.size() = " + strings.size()));



        /*
        不为空的情况
         */
        System.out.println("\n\n\n不为空的情况==================================");
        objects.add("张三");
        objects.add("李四");
        objects.add("王五");
        objects.add("赵六");
        objects.add(null);
        objects.add(" ");
        System.out.println("Opt.of(objects) = " + Opt.of(objects));
        System.out.println("Opt.ofNullable(objects) = " + Opt.ofNullable(objects));
        System.out.println("Opt.ofBlankAble(objects) = " + Opt.ofBlankAble(objects));
        System.out.println("Opt.ofEmptyAble(objects) = " + Opt.ofEmptyAble(objects));
        System.out.println("Opt.ofEmptyAble(objects).get() = " + Opt.ofEmptyAble(objects).get());
        System.out.println("objects.isEmpty() = " + objects.isEmpty());
        Opt.ofEmptyAble(objects).ifPresent(strings -> System.out.println("strings = " + strings));
        Opt.ofEmptyAble(objects).ifPresentOrElse(Console::log, () -> Console.error("传入的值不存在呢"));
        System.out.println("Opt.ofEmptyAble(objects).filter(strings -> strings.size() > 10) = " + Opt.ofEmptyAble(objects).filter(strings -> strings.size() > 3));
        Opt.ofEmptyAble(objects).peek(System.out::println);
        Opt.ofEmptyAble(objects).peeks(strings -> System.out.println("strings.size() = " + strings.size()));



        /*
        其他东西
         */
        System.out.println("\n\n\n其他东西===========================");
        int num1 = 100;
        int num2 = 11;
        System.out.println("Opt.ofTry(() -> num1 + num2) = " + Opt.ofTry(() -> num1 + num2));
    }

三、运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
为空的情况==================================
Opt.empty() = null
Opt.of(objects) = []
Opt.ofNullable(objects) = []
Opt.ofBlankAble(objects) = []
Opt.ofEmptyAble(objects) = null
objects.isEmpty() = true
传入的值不存在呢
Opt.ofEmptyAble(objects).filter(strings -> strings.size() > 10) = null



不为空的情况==================================
Opt.of(objects) = [张三, 李四, 王五, 赵六, null,  ]
Opt.ofNullable(objects) = [张三, 李四, 王五, 赵六, null,  ]
Opt.ofBlankAble(objects) = [张三, 李四, 王五, 赵六, null,  ]
Opt.ofEmptyAble(objects) = [张三, 李四, 王五, 赵六, null,  ]
Opt.ofEmptyAble(objects).get() = [张三, 李四, 王五, 赵六, null,  ]
objects.isEmpty() = false
strings = [张三, 李四, 王五, 赵六, null,  ]
[张三, 李四, 王五, 赵六, null,  ]
Opt.ofEmptyAble(objects).filter(strings -> strings.size() > 10) = [张三, 李四, 王五, 赵六, null,  ]
[张三, 李四, 王五, 赵六, null,  ]
strings.size() = 6



其他东西===========================
Opt.ofTry(() -> num1 + num2) = 111
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Java新特性】Lambda表达式典型案例,你想要的的都在这儿了!!
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
冰河
2020/10/29
3870
【Java新特性】Lambda表达式典型案例,你想要的的都在这儿了!!
HashSet源码解析(基于Java8)addsize()isEmpty()remove()contains()clear()小结附 关于有序性
List保证元素的添加顺序,元素可重复 Set不保证元素的添加顺序,元素不可重复 public class Test { public static void main(St
JavaEdge
2018/05/16
6220
还在用又臭又长的多层 if 判断空值?那我推荐你使用 Optional
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2024/02/06
2K0
告别繁琐循环,zip函数让Python数据处理变得简单高效
Python中的zip函数是一个非常实用的内置函数,它主要用于将多个可迭代对象(如列表、元组等)中对应位置的元素打包成一个个元组,然后返回由这些元组组成的zip对象(在Python 3中,zip对象是一个迭代器)。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*操作符,可以将zip对象解压为列表。
小白的大数据之旅
2024/11/20
1520
告别繁琐循环,zip函数让Python数据处理变得简单高效
大型项目架构搭建_高内聚、低耦合(1)
软件开发中的项目的架构的终极目标就六个字: 高内聚、低耦合; 架构搭建好了,后期可维护性才能提高,在这基础上,如果还想提高项目的高效性,就只能从算法着手 如果项目中算法都已经做到极致了,还想提高项目的高效性,怎么办?(算法并不一定能处理高并发的问题) 就要用到中间件的技术了 下面我就从这三方面来搭建一个项目 假设我们有个这么需求 我公式和YC公式合作,开发一个项目,这个项目功能是用来测量东西的一个项目,我们公式在存储数据方面做得好,YC公司所以要和我们合作,要我们做一个对数据进行保存的容器,他们公司直
汤高
2018/01/11
1.2K0
Java8新特性:Optional类的正确使用姿势
空指针异常是我们在实际开发中经常会遇到的问题,为了防止程序因为异常而中断,通常要在代码中添加大量的非空验证,例如一个释放 JDBC 相关资源的代码,如下所示。
南风
2019/08/01
9800
Java8新特性:Optional类的正确使用姿势
04-Java8新特性 Stream API
Java8中有两大最为重要的改变,第一个是Lambda表达式,另一个则是Stream API(java.util.stream.*)
彼岸舞
2021/12/14
9510
04-Java8新特性 Stream API
java_List、Set、Conllections工具类
List接口特点: 1. 它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。 2. 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。 3. 集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
咕咕星
2020/08/19
4080
java_List、Set、Conllections工具类
HashSet的秘密
HashMap还没讲完,还有几篇文章,目前在构思中,HashMap是集合类的精华,底层实现也比较复杂,真正理解了HashMap,也算是上了小小的一层台阶。
用户1880875
2021/07/27
3040
JDK8中新增的Optional工具类真的很好用哦,建议收藏
  最近刚好有空给大家整理下JDK8的特性,这个在实际开发中的作用也是越来越重了,本文重点讲解下Optional
用户4919348
2021/06/10
6350
JDK8中新增的Optional工具类真的很好用哦,建议收藏
【day20】集合深入探讨
按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
程序员波特
2024/12/30
600
【day20】集合深入探讨
Stream流你学会了吗?
Steam流 1. 创建Stream流的方式 创建一个Stream流 进行数据操作 终止操作 1.1 如何创建Stream流 Collection提供的两个方法stream()和parallelStream() stream()流获取的是一个顺序流 parallelstream()获取一个并行流 Set<String> set = new HashSet<>(); Stream<String> stream = set.stream(); Stream<String> stringStream = set.
石的三次方
2021/01/05
1.6K0
【JAVA】你认识强大的 Stream 和 Optional 吗?
早已仰慕 Stream 流久已,终于有机会彻底的了解其特性以及用法了,关于源码的深度理解可能还需要继续增加功底,在学 Stream 的时候,同时认识了强大的 Optional,奈斯!
sidiot
2023/08/31
2630
Java8-新特性
哈喽!大家好,我是小简。今天开始学习《Java8-新特性》,此系列是我做的一个 “Java 从 0 到 1 ” 实验,给自己一年左右时间,按照我自己总结的 Java-学习路线,从 0 开始学 Java 知识,并不定期更新所学笔记,期待一年后的蜕变吧!<有同样想法的小伙伴,可以联系我一起交流学习哦!>
小简
2023/01/04
4040
Java8-新特性
java---常用类
工具提示中划删除线的方法代表是过时的方法,过时的方法不建议使用,非要使用也没问题。@Deprecated 只要方法上有这个注解代表当前的方法过时了,不建议使用。
用户10787181
2023/10/17
2260
java---常用类
Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: 1:声明val变量:可以使用val来声明变量,用来存放表达式的计算结果,但是常量声明后是无法改变它的值的,建议使用val来声明常量; 声明var变量:如果要声明可以改变的引用,可以使用var变量,声明的常量的值可以改变。 3:指定类型:无论声明val变量还是声明var变量。都可以手动指定其类型,如果不指定,scala会自动根据值,进行类型的推断;
别先生
2018/04/02
1.5K0
JAVA数组练习
1 package com.zhang.hello; 2 3 public class TestArray { 4 public static int NO1(double [] score){ 5 int count=0; 6 for(double d:score){ 7 if(d<60){ 8 count++; 9 } 10 }
拾点阳光
2018/05/10
6140
JAVA8实战 - Optional工具类
没错,这又是一个新的专栏,JAVA8可以说是JAVA划时代的一个版本,几乎是让JAVA焕发了第三春(第二春在JDK5),当然里面的新特性也是十分重要的,虽然Java现在都已经到了10几的版本,但是国内多数使用的版本还是JAVA8,所以这个系列将会围绕Java8的新特性和相关工具做一些总结。希望对大家日常学习和工作中有所帮助。
阿东
2021/08/16
1.8K0
Java 8 Optional 最佳指南
想学习,永远都不晚,尤其是针对 Java 8 里面的好东西,Optional 就是其中之一,该类提供了一种用于表示可选值而非空引用的类级别解决方案。作为一名 Java 程序员,我真的是烦透了 NullPointerException(NPE),尽管和它熟得就像一位老朋友,知道它也是迫不得已——程序正在使用一个对象却发现这个对象的值为 null,于是 Java 虚拟机就怒发冲冠地把它抛了出来当做替罪羊。
沉默王二
2020/03/11
6740
Java 8 Optional 最佳指南
玩转Mysql系列 - 第11篇:深入了解连接查询及原理
当我们查询的数据来源于多张表的时候,我们需要用到连接查询,连接查询使用率非常高,希望大家都务必掌握。
路人甲Java
2019/09/20
1.3K0
推荐阅读
相关推荐
【Java新特性】Lambda表达式典型案例,你想要的的都在这儿了!!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档