Java工具类用的好,早点码完早点跑
随着编写大量的代码,突然发现有些代码业务实际不负责,只是一遍遍的处理各种数据,各种转换占据着我们大量的时间,字符串截取,转换格式,判空,字符替换,日期格式转换,数组集合各种判断等等,既拉低效率也使代码变得臃肿,针对这种情况,可以用工具类替换自己实现的这些繁琐的逻辑,大家有需要的可以看看哦!
常用工具类
1.字符串工具类
导入依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.10</version>
</dependency>
有兴趣的同学可以研究一下这个类:
org.apache.commons.lang3.StringUtils
1.1字符串判空
StringUtils.isEmpty(str){}
1.2字符串补位
这个通常用于字符串需要固定长度的场景,比如需要固定长度字符串作为流水号,若流水号长度不够,左边补 0 ,我以前是先判断字符串长度,然后再加上缺少的位数,少年,该提高了_
// 字符串固定长度 8位,若不足,往左补 0,rightPad往右补 0
StringUtils.leftPad("test", 8, "0");
1.3字符串拼接
字符串拼接的写法
String[] array = new String[]{"test", "1234", "5678"};
StringBuilder stringBuilder = new StringBuilder();
for (String s : array) {
stringBuilder.append(s).append(";");
}
// 防止最终拼接字符串为空
if (stringBuilder.length() > 0) {
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
}
System.out.println(stringBuilder.toString());
1.4字符串替换
替换一般都是这样写滴。
// 默认替换所有关键字
StringUtils.replace("aba", "a", "z") = "zbz";
// 替换关键字,仅替换一次
StringUtils.replaceOnce("aba", "a", "z") = "zba";
// 使用正则表达式替换
StringUtils.replacePattern("ABCabc123", "[^A-Z0-9]+", "") = "ABC123";
2.数组工具类
org.apache.commons.lang.ArrayUtils
数组判空
// 数组判空
if (ArrayUtils.isEmpty(array)) {
}
除此之外,还有 isEquals:比较数组是否相等 ; contains:是否包含某字符串 ; clone:克隆一个数组 等方法,有兴趣的同学可以研究下。
3.集合工具类
导入依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</vesion>
</dependency>
我们可以使用 CollectionUtils/MapUtils
对集合进行判空判断,再也不用使用 list.size()>0 判空了。
// List/Set 集合判空
if(CollectionUtils.isEmpty(list)){
}
// Map 等集合进行判空
if (MapUtils.isEmpty(map)) {
}
4.日期工具类
哈哈,我猜你是这样写的
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// Date 转 字符串
simpleDateFormat.format(new Date());
// 字符串 转 Date
simpleDateFormat.parse("2020-05-07 22:00:00");
但是这里需要注意 SimpleDateFormat
,不是线程安全的,多线程环境一定要注意使用安全。
这里我推荐 commons-lang3
下的时间工具类DateUtils/DateFormatUtils
,解决 Date 与字符串转化问题。
代码:
// Date 转化为字符串
DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss");
// 字符串 转 Date
DateUtils.parseDate("2020-05-07 22:00:00","yyyy-MM-dd HH:mm:ss");
除了格式转化之外,DateUtils
还提供时间计算的相关功能。
Date now = new Date();
// Date 加 1 天
Date addDays = DateUtils.addDays(now, 1);
// Date 加 33 分钟
Date addMinutes = DateUtils.addMinutes(now, 33);
// Date 减去 233 秒
Date addSeconds = DateUtils.addSeconds(now, -233);
// 判断是否 Wie 同一天
boolean sameDay = DateUtils.isSameDay(addDays, addMinutes);
// 过滤时分秒,若 now 为 2020-05-07 22:13:00 调用 truncate 方法以后
// 返回时间为 2020-05-07 00:00:00
Date truncate = DateUtils.truncate(now, Calendar.DATE);
此外,还有以下工具类,了解工具类开发起来事半功倍,还没研究的同学都应该打开源码研究一下:
IO流工具类:
org.apache.commons.io.IOUtils
文件工具类:
org.apache.commons.io.FileUtils
集合工具类:
org.apache.commons.collections.CollectionUtils
PS:
我的公众号,一个专注于面试通关和优质项目的技术型公众号,关注一下吧