工具类整理

常用工具类

在java的庞大体系中,其实有很多不错的小工具,也就是我们平常说的:轮子

CollectionUtils

目前比较主流的是springorg.springframework.util包下的CollectionUtils工具类。和apacheorg.apache.commons.collections包下的CollectionUtils工具类。

但是我个人更推荐使用apache的包下的CollectionUtils工具类,因为它的工具更多更全面。

举个简单的例子,spring的CollectionUtils工具类没有判断集合不为空的方法。而apache的CollectionUtils工具类却有。所以这里就讲Apache下的CollectionUtils工具类的使用。

集合判空

通过CollectionUtils工具类的isEmpty方法可以轻松判断集合是否为空,isNotEmpty方法判断集合不为空。

package yimeng;

import com.ruoyi.RuoYiApplication;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.apache.commons.collections.CollectionUtils;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author yimeng
 * @Date 2023/12/3 12:40
 * @PackageName:PACKAGE_NAME
 * @ClassName: yimeng.MyTest
 * @Description: 测试
 * @Version 1.0
 */
@SpringBootTest(classes = RuoYiApplication.class)
public class MyTest {
    @Test
    public void hello () {
        List<Integer> list = new ArrayList<>();
        list.add(2);
        list.add(1);
        list.add(3);

        if (CollectionUtils.isEmpty(list)) {
            System.out.println("集合为空");
        }

        if (CollectionUtils.isNotEmpty(list)) {
            System.out.println("集合不为空");
        }

        List<Integer> list2 = new ArrayList<>();
        if (CollectionUtils.isEmpty(list2)) {
            System.out.println("集合为空");
        }

        if (CollectionUtils.isNotEmpty(list2)) {
            System.out.println("集合不为空");
        }

        List<Integer> list3 = null;
        if (CollectionUtils.isEmpty(list3)) {
            System.out.println("集合为空");
        }

        if (CollectionUtils.isNotEmpty(list3)) {
            System.out.println("集合不为空");
        }
    }
}

在这里插入图片描述

StringUtils

字符串(String)在我们的日常工作中,用得非常非常非常多。

在我们的代码中经常需要对字符串判空,截取字符串、转换大小写、分隔字符串、比较字符串、去掉多余空格、拼接字符串、使用正则表达式等等。

如果只用String类提供的那些方法,我们需要手写大量的额外代码,不然容易出现各种异常。

现在有个好消息是:org.apache.commons.lang3包下的StringUtils工具类,给我们提供了非常丰富的选择。

字符串判空

其实空字符串,不只是null一种,还有"“,” ",“null”(当然哈,对于"null"一般都是认为是单纯的字符串,只是字符串的值是null而已,和普通字符串没什么区别)等等,多种情况。

StringUtils给我们提供了多个判空的静态方法,例如:

package yimeng;

import com.ruoyi.RuoYiApplication;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

/**
 * @Author yimeng
 * @Date 2023/12/3 12:40
 * @PackageName:PACKAGE_NAME
 * @ClassName: yimeng.MyTest
 * @Description: 测试
 * @Version 1.0
 */
@SpringBootTest(classes = RuoYiApplication.class)
public class MyTest {
    @Test
    public void hello() {
        String str1 = null;
        String str2 = "";
        String str3 = " ";
        String str4 = "abc";
        String str5 = "null";
        System.out.println(StringUtils.isEmpty(str1));//true
        System.out.println(StringUtils.isEmpty(str2));//true
        System.out.println(StringUtils.isEmpty(str3));//false
        System.out.println(StringUtils.isEmpty(str4));//false
        System.out.println(StringUtils.isEmpty(str5));//false
        System.out.println("=====");
        System.out.println(StringUtils.isNotEmpty(str1));//false
        System.out.println(StringUtils.isNotEmpty(str2));//false
        System.out.println(StringUtils.isNotEmpty(str3));//true
        System.out.println(StringUtils.isNotEmpty(str4));//true
        System.out.println(StringUtils.isNotEmpty(str5));//true
        System.out.println("=====");
        System.out.println(StringUtils.isBlank(str1));//true
        System.out.println(StringUtils.isBlank(str2));//true
        System.out.println(StringUtils.isBlank(str3));//true
        System.out.println(StringUtils.isBlank(str4));//false
        System.out.println(StringUtils.isBlank(str5));//false
        System.out.println("=====");
        System.out.println(StringUtils.isNotBlank(str1));//false
        System.out.println(StringUtils.isNotBlank(str2));//false
        System.out.println(StringUtils.isNotBlank(str3));//false
        System.out.println(StringUtils.isNotBlank(str4));//true
        System.out.println(StringUtils.isNotBlank(str5));//true
    }
}

在这里插入图片描述

示例中的:isEmptyisNotEmptyisBlankisNotBlank,这4个判空方法你们可以根据实际情况使用。

优先推荐使用isBlankisNotBlank方法,因为它会把" "也考虑进去。

分隔字符串

分隔字符串是常见需求,如果直接使用String类的split方法,就可能会出现空指针异常。

package yimeng;

import com.ruoyi.RuoYiApplication;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Arrays;

/**
 * @Author yimeng
 * @Date 2023/12/3 12:40
 * @PackageName:PACKAGE_NAME
 * @ClassName: yimeng.MyTest
 * @Description: 测试
 * @Version 1.0
 */
@SpringBootTest(classes = RuoYiApplication.class)
public class MyTest {
    @Test
    public void hello() {
        String str = "yi,meng";
        System.out.println(StringUtils.split(str,","));
        System.out.println(str.split(","));
        String str1 = null;
        System.out.println(StringUtils.split(str1,","));
        System.out.println(str1.split(","));
    }
}

在这里插入图片描述

使用StringUtils的split方法会返回null,而使用String的split方法会报指针异常。

Objects

jdk7之后,提供了Objects工具类,我们可以通过它操作对象。

对象为空抛异常

如果我们想在对象为空时,抛出空指针异常,可以使用Objects的requireNonNull方法。

package yimeng;

import com.ruoyi.RuoYiApplication;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Objects;

/**
 * @Author yimeng
 * @Date 2023/12/3 12:40
 * @PackageName:PACKAGE_NAME
 * @ClassName: yimeng.MyTest
 * @Description: 测试
 * @Version 1.0
 */
@SpringBootTest(classes = RuoYiApplication.class)
public class MyTest {
    @Test
    public void hello() {
        Integer integer1 = new Integer(128);
        Objects.requireNonNull(integer1);//如果integer1,抛出空指针异常,没有特别指定异常的提示信息
        Objects.requireNonNull(integer1, () -> "参数不能为空");//如果integer1,抛出空指针异常,并异常的提示信息为“参数不能为空”

        Objects.requireNonNull(null, () -> "参数不能为空");//抛出空指针异常,并异常的提示信息为“参数不能为空”
    }
}

在这里插入图片描述

他的源码如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/214437.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

根据豆瓣对《流浪地球》的短评数据进行文本分析和挖掘

1背景 2019年2月5日电影《流浪地球》正式在中国内地上映。该电影在举行首映的时候&#xff0c;口德好得出奇&#xff0c;所有去看片的业界大咖都发出了画样赞叹&#xff0c;文化学者能锦说:“中国科幻电影元年开启了。"导演徐峰则说&#xff0c;“里程碑式的电影&#xf…

实时流式计算 kafkaStream

文章目录 实时流式计算Kafka StreamKafka Streams 的关键概念KStreamKafka Stream入门案例编写SpringBoot 集成 Kafka Stream 实时流式计算 一般流式计算会与批量计算相比较 流式计算就相当于上图的右侧扶梯&#xff0c;是可以源源不断的产生数据&#xff0c;源源不断的接收数…

WEB服务器配置与HTTP分析

目录 实验目的&#xff1a; 实验要求&#xff1a; 实验原理&#xff1a; 实验步骤&#xff1a; 步骤1&#xff1a;创建拓扑 步骤2&#xff1a;为PC、Client和Server配置IPv4地址、子网掩码和域名服务器 步骤3&#xff1a;启动设备和服务器 步骤4&#xff1a;测试PC-1、C…

【Qt开发流程】之自定义语法高亮和使用HTML语法

描述 语法高亮&#xff08;Syntax Highlighting&#xff09;是一种在编辑器中突出显示代码语法元素的技术&#xff0c;使其更易于阅读和理解。 Qt提供了一个功能齐全的语法高亮框架&#xff0c;支持多种语言和格式&#xff0c;可以自定义颜色和样式。 对于使用Qt的开发人员来说…

HADOOP::Fsimage和Edits解析

NameNode被格式化之后&#xff0c;将在/opt/module hadoop-3.1.3/data/tmp/dfs/name/curent目录 中产生如下文件 fsimage_ 0000000000000000000 fsimage_ 0000000000000000000.md5 seen_txid VERSION (1) Fsimage文件: HDFS文件系统元数据的一个永久性的检查点&#xff0…

使用pytorch从零开始实现迷你GPT

生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I&#xff0c;Transformer II [3] 变分自编码器 [4] 生成对抗网络&#xff0c;高级生成对抗网络 I&#xff0c;高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…

机器学习决策树ID3算法

1、先去计算总的信息量 2、根据不同指标分别计算对应的信息增益 3、根据算出的信息增益来选择信息增益最大的作为根结点 4、天气中选择一个继续上述过程 5、决策树划分结束

solidity实现ERC20代币标准

文章目录 1、以太坊 - 维基百科2、IERC203、ERC204、Remix 编译部署 1、以太坊 - 维基百科 以太坊&#xff08;Ethereum&#xff09;是一个去中心化的开源的有智能合约功能的公共区块链平台。以太币&#xff08;ETH 或 Ξ&#xff09;是以太坊的原生加密货币。截至2021年12月&a…

克服.360勒索病毒:.360勒索病毒的解密和预防

导言: 在数字化的今天&#xff0c;数据安全问题变得愈发棘手。.360勒索病毒是当前网络空间的一场潜在灾难&#xff0c;对于这个威胁&#xff0c;了解应对之道和采取切实的预防措施至关重要。如果您正在经历勒索病毒的困境&#xff0c;欢迎联系我们的vx技术服务号&#xff08;s…

华为手环配置技巧

前言 华为手环作为生活健康辅助设备发挥不可忽视的作用&#xff0c;但每次更换手环后需要重新配置。华为手环不仅有健康监测、消息通知、天气推送、离线支付、公交卡、运动锻炼、等功能&#xff0c;还有倒计时、计时器、手电筒、闹钟、等小工具。下文介绍如何进行配置。 配置…

C/C++学生选课/排课系统[2023-12-3]

问题描述&#xff1a;根据我校自动化专业的部分必修及选修课信 息&#xff0c;设计一个学生选课/排课系统。 基本要求&#xff1a; 1、从文件读入课程信息&#xff1b; 2、从键盘输入拟添加的选修课信息&#xff1b; 3、删除已选的选修课(1门或多门) &#xff1b; 4、输出已…

【小沐学Python】网络爬虫之lxml

文章目录 1、简介2、安装3、基本功能3.1 lxml.etree3.2 解析HTML网页3.3 读取并解析HTML文件3.4 提取所有a标签内的文本信息3.5 树迭代3.6 序列化3.7 元素以字典的形式携带属性3.8 元素包含文本 4、代码测试4.1 lxml解析网页4.2 使用xpath获取所有的文本4.3 使用xpath获取 clas…

html动漫网页设计分享 紫罗兰永恒花园网页作业成品带视频,注册登录,表格,表单

html5静态网页设计要是用HTML DIVCSS JS等来完成页面的排版设计,一般的网页作业需要融入以下知识点&#xff1a;div布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点&#xff0c;学生网页作业源码可以…

大数据-hive

简介 hive是基于Hadoop的一个数据仓库工具&#xff0c;用来进行数据提取、转化、加载&#xff0c;这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表&#xff0c;并提供SQL查询功能&#xff0c;能将SQL…

一站式自动化:Ansible Playbook的全面学习之旅

1 Playbook介绍 1.1 Playbook介绍 playbook 是由一个或多个play组成的列表 Playbook 文件使用YAML来写的 1.2 YAML 1.2.1 介绍 是一种表达资料序列的格式&#xff0c;类似XML Yet Another Markup Language 2001年首次发表 www.yaml.org 1.2.2 特点 可读性好 和脚本语言交…

探究两个互联网时代的差异,Web 2.0 与 Web 3.0 区别

Web 2.0 的特征 首先我们来了解一下 Web 2.0 的特征都有哪些。 用户生成内容&#xff1a;Web 2.0 时代以用户生成内容为特征&#xff0c;用户可以轻松地在网络上分享、创建和编辑信息。社交媒体平台、博客等网站的兴起使得用户成为信息的创造者&#xff0c;网络逐渐从被动浏览…

华为手环关闭智能适时测量

问题 使用华为手环并使用华为创新研究APP后&#xff0c;会自动打开智能适时测量开关&#xff0c;此开关开启后&#xff0c;手环会在睡眠时间自动测量血氧&#xff0c;增加手环功耗从而影响续航&#xff0c;用户可根据自身需求决定是否开启&#xff0c;下文介绍如何找到此开关。…

Vue+ElementUI+C#前后端分离:监控长耗时任务的实践

想象一下&#xff0c;我们正在构建一个Web应用&#xff0c;需要实现一个数据报告的导出功能。这听起来很简单&#xff0c;不是吗&#xff1f;但是&#xff0c;随着深入开发&#xff0c;我们意识到导出过程比预期的要复杂和耗时得多。由于报告的数据量巨大&#xff0c;后端需要花…

qt-C++笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解

qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解 code review! 文章目录 qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解1.示例运行2.event->pos();详解3.event->pos()的坐标系原点4.Qt中的坐标系详解5.QMainWindow::mousePressEvent(event);详解 1.示例…

ssm医药进出口交易系统源码和论文

ssm医药进出口交易系统源码和论文726 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构…