Java常用工具类

1.StringUtils

1
2
3
4
5
6
7
// maven依赖
// StringUtils、NumberUtils、ObjectUtils、ArrayUtils工具类使用该依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>

(1)isBlank() && isNotBlank

1
2
3
// 判断 字符串是否为:null || "" || "  "
StringUtils.isBlank() : 判断是否为空
StringUtils.isNotBlank() : 判断是否不为空

(2)isEmpty() && isNotEmpty()

1
2
3
// 判断 字符串是否为:null || ""
StringUtils.isEmpty() : 判断是否为空
StringUtils.isNotEmpty() : 判断是否不为空

(3)left && right && rightPad

1
2
3
4
5
6
7
8
//手机号 或 密码 脱敏
String str = "17513276352";
String leftNum = StringUtils.left(str, 3);
String rightNum = StringUtils.right(str, 4);
System.out.println(leftNum + "*****" + rightNum);
//-----------------------------------------------
String s = StringUtils.rightPad(leftNum, 8, "*");
System.out.println(s + rightNum);

2.NumberUtils

(1)isDigits()

1
2
3
4
5
6
7
8
9
10
11
// 判断 是否为整数,整数:true  不是整数:false
String str = "123";
System.err.println("整数结果:" + NumberUtils.isDigits(str)); //true
str = "123.1";
System.err.println("浮点数结果:" + NumberUtils.isDigits(str)); //false
str = "+123.1";
System.err.println("带➕的浮点数:" + NumberUtils.isDigits(str)); //false
str = "-123.1";
System.err.println("带➖号的浮点数:" + NumberUtils.isDigits(str)); //false
str = "123.1aa";
System.err.println("字符串:" + NumberUtils.isDigits(str)); //false

(2)isParsable()

1
2
3
4
5
6
7
8
9
10
11
// 判断 是否为整数,整数、浮点数:true  不是整数:false  (会识别➖号的浮点数或整数)
String str = "123";
System.err.println("整数结果:" + NumberUtils.isParsable(str)); //true
str = "123.1";
System.err.println("浮点数结果:" + NumberUtils.isParsable(str)); //true
str = "+123.1";
System.err.println("带➕的浮点数:" + NumberUtils.isParsable(str)); //false
str = "-123.1";
System.err.println("带➖号的浮点数:" + NumberUtils.isParsable(str)); //true
str = "123.1aa";
System.err.println("字符串:" + NumberUtils.isParsable(str)); //false

(3)isCreatable()

1
2
3
4
5
6
7
8
9
10
11
// 判断 是否为整数,整数、浮点数:true  不是整数:false  (会识别➕号和➖号的浮点数或整数)
String str = "123";
System.err.println("整数结果:" + NumberUtils.isCreatable(str)); //true
str = "123.1";
System.err.println("浮点数结果:" + NumberUtils.isCreatable(str)); //true
str = "+123.1";
System.err.println("带➕的浮点数:" + NumberUtils.isCreatable(str)); //true
str = "-123.1";
System.err.println("带➖号的浮点数:" + NumberUtils.isCreatable(str)); //true
str = "123.1aa";
System.err.println("字符串:" + NumberUtils.isCreatable(str)); //false

3.ObjectUtils

(1)firstNonNull()

1
2
3
4
5
// 返回不为null的字符串值 不包括 : ""
String str1 = null;
String str2 = null;
String str3 = "123";
System.err.println(ObjectUtils.firstNonNull(str1, str2, str3)); //123

4.ArrayUtils

(1)isEmpty()

1
2
3
4
5
6
// 判断 数组是否为null 或 长度是否为0
String[] str = new String[0];
str = null;
System.err.println(ArrayUtils.isEmpty(str)); //为null 返回true
String[] str2 = {"1", "2"};
System.err.println(ArrayUtils.isEmpty(str2)); //不为空 返回false

(2)toString() && add()

1
2
3
4
5
// add() 添加数组数据
String[] str1 = new String[1];
str1[0] = "1";
String[] strings = ArrayUtils.add(str1, "2");
System.out.println(ArrayUtils.toString(strings));

5.CollectionUtils

1
2
3
4
5
6
7
// maven依赖
// CollectionUtils、MapUtils工具类使用该依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>

(1)isEmpty()

1
2
3
4
// 判断 集合是否为null 或 长度是否为0
ArrayList<Object> list = new ArrayList<>();
System.err.println(CollectionUtils.isEmpty(list)); //为空:true
System.err.println(CollectionUtils.isNotEmpty(list)); //不为空:false

(2)intersection() && union() && subtract()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// intersection() 交集:两个集合重复的数据
// union() 并集:两个集合不重复的数据
// subtract() 差集:第一个集合和第二个集合比较,第二个集合没有的数据
ArrayList<Object> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
ArrayList<Object> list1 = new ArrayList<>();
list1.add(3);
list1.add(4);
list1.add(5);
System.err.println("交集:" + CollectionUtils.intersection(list, list1)); //[3]
System.err.println("并集:" + CollectionUtils.union(list, list1)); //[1, 2, 4, 5]
System.err.println("如果list在前 差集是:" + CollectionUtils.subtract(list, list1)); //[1, 2]
System.err.println("如果list1在前 差集是:" + CollectionUtils.subtract(list, list1)); //[4, 5]

6.MapUtils

(1)getInteger()

1
2
3
4
// 获取到map key中的数据并转成Integer类型
Map<String, Object> map = new HashMap<>();
map.put("a", "1111");
System.out.println(MapUtils.getInteger(map, "a")); //1111

7.FileUtils

1
2
3
4
5
6
7
// maven依赖
// FileUtils、FilenameUtils工具类使用该依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>

(1)readFileToString()

1
2
3
4
5
6
7
8
9
// 读取指定文本文件的内容为一个字符串
String path = "/Users/geyabo/Documents/study/demo/javaUtilsDemo/src/main/resources/file.txt";
String fileData = null;
try {
fileData = FileUtils.readFileToString(new File(path), StandardCharsets.UTF_8);
} catch (IOException e) {
e.printStackTrace();
}
System.err.println(fileData);

(2)readLines()

1
2
3
4
5
6
7
8
9
// 读取指定文本文件的内容为 List
String path = "/Users/geyabo/Documents/study/demo/javaUtilsDemo/src/main/resources/file.txt";
List<String> fileData = null;
try {
fileData = FileUtils.readLines(new File(path), StandardCharsets.UTF_8);
} catch (IOException e) {
e.printStackTrace();
}
System.err.println(fileData.toString());

8.FilenameUtils

(1)getExtension()

1
2
3
// 	获取文件后缀名
String path = "/Users/geyabo/Documents/study/demo/javaUtilsDemo/src/main/resources/file.txt";
System.err.println(FilenameUtils.getExtension(path)); //txt

(2)getBaseName()

1
2
3
// 获取文件名
String path = "/Users/geyabo/Documents/study/demo/javaUtilsDemo/src/main/resources/file.txt";
System.err.println(FilenameUtils.getBaseName(path)); //file

9.Guava

1
2
3
4
5
6
// maven依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>29.0-jre</version>
</dependency>

(1)Joiner.on()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 将集合数据 以某种字符进行分割
ArrayList<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add(null);
//排除list null数据
Joiner joiner = Joiner.on("-").skipNulls(); //1-2-3
//替换null数据
Joiner joiner = Joiner.on(",").useForNull("4"); //1,2,3,4
System.out.println(joiner.join(list)); //1-2-3

//jdk8 中的实现
list.stream().filter(StringUtils::isNotBlank)
.collect(Collectors.joining(","))
  • skipNulls():排除list null数据

  •  useForNull():替换null数据

(2)Splitter.on()

1
2
3
4
5
6
7
8
9
10
11
// 分割字符串
String str = "1, 2, 3,, 4, ";
//指定逗号分割
Splitter splitter = Splitter.on(",")
//过滤掉空白字符串(不包括"")
.omitEmptyStrings() // [1, 2, 3, 4, ]
//去除每个元素的前后空格
.trimResults() // [1, 2, 3, 4]
;
Iterable<String> iterable = splitter.split(str);
System.err.println(iterable);
  • omitEmptyStrings():过滤掉空白字符串(不包括””)
  • trimResults():去除每个元素的前后空格

(3)CaseFormat

1
2
3
4
5
6
7
8
9
10
11
12
// 下划线转驼峰   驼峰转下划线  命名
String str = "stu_name";
//下划线转小驼峰命名
System.err.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, str)); //stuName
//下划线转大驼峰命名
System.err.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, str)); //StuName

//小驼峰转下划线命名
String str2 = "stuName";
System.err.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, str2)); //stu_name
//大驼峰转下划线命名
System.err.println(CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, str2)); //stu_name

(4)Lists

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//原始集合添加数据方式
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
System.err.println(list); //[a, b, c]

//工具类集合添加数据方式
ArrayList<String> list1 = Lists.newArrayList("a", "b", "c");
System.err.println(list1); //[a, b, c]
//指定类型添加数据
//Ints、Longs、Floats...
List<Integer> list2 = Ints.asList(1, 2, 3);
System.err.println(list2); //[1, 2, 3]

//批量传数据
List<List<String>> partition = Lists.partition(list1, 2);
for (List<String> strings : partition) {
System.err.println(partition); //[a, b] [c]
}

//Sets、Maps 使用参考Lists

(5)Preconditions

1
2
3
4
5
6
7
8
9
10
// 校验参数 使用
//正常校验
String str = null;
if (str == null) {
throw new RuntimeException("参数格式有误!");
}
//普通参数校验
Preconditions.checkNotNull(str, "参数格式有误!");
//表达式校验: 如果第一个参数表达式为false,抛出异常
Preconditions.checkArgument(str != null, "参数格式有误!");

10.Spring工具类

1
2
3
4
5
6
// maven 依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.18</version>
</dependency>

(1)ClassUtils

1
2
3
// 判断类是否存在
String className = "cn.gyb.lang.NumberUtilsTest";
System.err.println(ClassUtils.isPresent(className, null)); //存在为true,不存在为false

(2)ReflectionUtils

1
2
3
4
5
6
7
8
9
// 获取本类以及父类的所有属性
ReflectionUtils.doWithFields(ZhangSan.class, field -> {
System.err.println(field.getName());
});

// 获取本类以及父类的所有方法
ReflectionUtils.doWithMethods(ZhangSan.class, method -> {
System.err.println(method.getDeclaringClass().getName() + "的" + method.getName());
});

(3)BeanUtils

1
2
3
4
5
6
7
8
9
// 属性拷贝
ZhangSan zhangSan1 = new ZhangSan();
zhangSan1.setId(1);
zhangSan1.setName("李白");
zhangSan1.setMyName("张三");

ZhangSan target = new ZhangSan();
BeanUtils.copyProperties(zhangSan1, target);
System.out.println(target);

(4)FileCopyUtils

1
2
3
4
5
6
7
8
// 文件内容拷贝
//声明被拷贝的文件位置
ClassPathResource classPathResource = new ClassPathResource("text/file1.txt");
//指定编码
EncodedResource encodedResource = new EncodedResource(classPathResource, StandardCharsets.UTF_8);
//指定要拷贝到哪个文件
String targetPath = "/Users/geyabo/Documents/study/demo/javaUtilsDemo/src/main/resources/text/file2.txt";
FileCopyUtils.copy(encodedResource.getInputStream(), new FileOutputStream(targetPath));