超级实用的Java工具类

228 阅读3分钟

字符串工具类

首先介绍一下

**commons-lang3的一个字符串工具类StringUtils,常用方法如下:****1、isEmpty() 判断字符串是否为空。**2、isBlank() 判断字符串是否为空,如果字符串都是空格,也认为是空。

public

class StringUtilsTest {

public static void main(String[] args) {

String str = " ";

System.out.println(StringUtils.isNotBlank(str)); //false

System.out.println(StringUtils.isNotEmpty(str)); //true

}}

3、strip() 将字符串左右两边的空格删除。

String name = " 阿 杰 ";

System.out.println(StringUtils.strip(name)); //阿 杰

4、join(Object[] array, String separator) 将数组拼接成字符串,可以设置分隔符。

String[] nameArr = {"阿杰1", "阿杰2", "阿杰3"};

System.out.println(StringUtils.join(nameArr, ",")); //阿杰1,阿杰2,阿杰3

5、replace(String text, String searchString, String replacement)替换字符串关键字。

System.out.println(StringUtils.replace("hello, 阿杰", "hello", "hi")); //hi, 阿杰

日期工具类

SimpleDateFormat 不是线程安全的,在多线程环境会有并发安全问题,不推荐使用。这里大彬推荐另一个时间工具类DateFormatUtils,用于解决日期类型和字符串的转化问题,DateFormatUtils不会有线程安全问题。

Date 转化为字符串:

String dateStr = DateFormatUtils.format(new Date(), "yyyy-MM-dd");

System.out.println(dateStr);

字符串转

Date,可以使用commons-lang3 下时间工具类DateUtils。

String dateStr = DateFormatUtils.format(new Date(), "yyyy-MM-dd");

System.out.println(dateStr); //2021-10-08

字符串转

Date,可以使用commons-lang3 下时间工具类DateUtils。

String dateStr = "2021-10-01 15:00:00";

Date date = DateUtils.parseDate(dateStr, "yyyy-MM-dd HH:mm:ss");

System.out.println(date); //Fri Oct 01 15:00:00 CST 2021

Java8之后,将日期和时间分为LocateDate、LocalTime和LocalDateTime,相比Date类,这些类都是final类型的,不能修改,也是线程安全的。

使用

LocateDateTime获取年月日:

LocalDateTime now = LocalDateTime.now();

System.out.println(now.getYear()); //2021

System.out.println(now.getMonthValue()); //10

System.out.println(now.getDayOfMonth()); //8

使用

LocalDateTime进行字符串和日期的转化:

String datePattern = "yyyy-MM-dd HH:mm:ss";

//将字符串转化为日期

LocalDateTime dateTime = LocalDateTime.parse("2021-10-01 16:00:00", DateTimeFormatter.ofPattern(datePattern));

System.out.println(dateTime); //2021-10-01T16:00

//将LocalDateTime格式化为字符串

String dateStr = DateTimeFormatter.ofPattern(datePattern).format(dateTime);

System.out.println(dateStr); //2021-10-01 16:00:00

集合工具类

在开发接口功能的时候,经常需要对入参做判空处理:

if (null == list || list.isEmpty()) {

}

虽然代码很简单,但是也比较容易写出抛空指针异常的代码。推荐使用

commons-collections提供的工具类,使用简单,并且不会出错。

List nameList = new ArrayList<>();

if (CollectionUtils.isEmpty(nameList)) {

System.out.println("name list is empty");

}

Map集合判空使用commons-collections下的MapUtils工具类。数组判空需要使用commons-lang下的ArrayUtils。

//map判空

if (MapUtils.isEmpty(map)) {

}

//数组判空

if (ArrayUtils.isEmpty(array)) {

}

还可以使用

CollectionUtils对基础数据类型和String类型的集合进行取交集、并集和差集的处理。

String[] array1 = new String[] { "1", "2", "3", "4"};

String[] array2 = new String[] { "4", "5", "6", "7" };

List list1 = Arrays.asList(array1);

List list2 = Arrays.asList(array2);

//并集 union

System.out.println(CollectionUtils.union(list1, list2));

//output: [1, 2, 3, 4, 5, 6, 7]

//交集 intersection

System.out.println(CollectionUtils.intersection(list1, list2));

//output:[4]

数组工具类

ArrayUtils 是专门处理数组的类,方便进行数组操作,不再需要各种循环操作。

//合并数组

String[] arr1 = new String[]{"阿杰1", "阿杰2"};

String[] arr2 = new String[]{"阿杰3", "阿杰4"};

String[] arr3 = ArrayUtils.addAll(arr1, arr2);

System.out.println(ArrayUtils.toString(arr3));

//{阿杰1,阿杰2,阿杰3,阿杰4}

//数组clone操作:

String[] arr1 = new String[]{"阿杰1", "阿杰2"};

String[] arr2 = ArrayUtils.clone(arr1);

arr1[1] = "阿杰";

System.out.println("arr1:" + ArrayUtils.toString(arr1)); // arr1:{阿杰1,阿杰}

System.out.println("arr2:" + ArrayUtils.toString(arr2)); // arr2:{阿杰1,阿杰2}

//将数组原地翻转:

//将arr1翻转

String[] arr1 = new String[]{"阿杰1", "阿杰2"};

ArrayUtils.reverse(arr1);

System.out.println(ArrayUtils.toString(arr1)); //{阿杰2,阿杰1}

文件工具类

在平时工作当中,经常会遇到很多文件的操作,借助

commons-io的FileUtils可以大大简化文件操作的开发工作量。

首先引入

commons-io依赖:

commons-io

commons-io

2.5

读文件操作代码如下,其中,:

System.out.println(FileUtils.readFileToString(new File("E:/demo.txt"), "GB2312")); //或者utf-8

//readLines返回List

阿杰

1 AB C

阿杰

2 D EF

System.out.println(FileUtils.readLines(new File("E:/demo.txt"), "GB2312"));//或者utf-8

// [阿杰1 AB C, 阿杰2 D EF]

写文件操作:

//第一个参数File对象

//第二个参数是写入的字符串

//第三个参数是编码方式

//第四个参数是是否追加模式

FileUtils.writeStringToFile(new File("E://Demo.txt"), "大彬", "gb2312",true);

删除文件

/文件夹操作:

FileUtils.deleteDirectory(new File("E://test"));

FileUtils.deleteQuietly(new File("E://test")); //永远不会抛出异常,传入的路径是文件夹,则会删除文件夹下所有文件

码字不易,如果觉得对你有帮助,可以点个赞鼓励一下!