常用工具类
在java的庞大体系中,其实有很多不错的小工具,也就是我们平常说的:轮子
。
CollectionUtils
目前比较主流的是spring
的org.springframework.util
包下的CollectionUtils工具类。和apache
的org.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
}
}
示例中的:isEmpty
、isNotEmpty
、isBlank
和isNotBlank
,这4个判空方法你们可以根据实际情况使用。
优先推荐使用
isBlank
和isNotBlank
方法,因为它会把" "
也考虑进去。
分隔字符串
分隔字符串是常见需求,如果直接使用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, () -> "参数不能为空");//抛出空指针异常,并异常的提示信息为“参数不能为空”
}
}
他的源码如下: