org.apache.commons 这个包下有很多好用的工具类方法,这是初入Java的小生所必须get的一个点,可以帮助我们快速解决很多小而繁琐的代码,提高代码质量。比如为避免一些空指针,让代码更严谨更安全,像一些常用的判空处理,这个包下提供了很全面的方法来帮助我们快速简单有效达到我们想要的结果。我们在平时的开发中应该多使用开源的工具类,简洁高效我们的代码。下面我就简单举例来说明:(详细内容同学请自行了解)
CollectionUtils在真实项目中,是一个非常好用的工具类,使用非常频繁。它可以使代码更加简洁和安全。刚好在工作中利用这个工具类重构代码,顺便总结下分享分享:
并集
@Test
public void testUnion(){
String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };
String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };
List listA = Arrays.asList(arrayA);
List listB = Arrays.asList(arrayB);
//2个数组取并集
System.out.println(ArrayUtils.toString(CollectionUtils.union(listA, listB)));
//[A, B, C, D, E, F, G, H, K]
}
交集
@Test
public void testIntersection(){
String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };
String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };
List listA = Arrays.asList(arrayA);
List listB = Arrays.asList(arrayB);
//2个数组取交集
System.out.println(ArrayUtils.toString(CollectionUtils.intersection(listA, listB)));
//[B, D, F]
}
交集的补集(析取)
@Test
public void testDisjunction(){
String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };
String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };
List listA = Arrays.asList(arrayA);
List listB = Arrays.asList(arrayB);
//2个数组取交集 的补集
System.out.println(ArrayUtils.toString(CollectionUtils.disjunction(listA, listB)));
//[A, C, E, G, H, K]
}
差集(扣除)
@Test
public void testSubtract(){
String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };
String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };
List listA = Arrays.asList(arrayA);
List listB = Arrays.asList(arrayB);
//arrayA扣除arrayB
System.out.println(ArrayUtils.toString(CollectionUtils.subtract(listA, listB)));
//[A, C, E]
}
集合是否为空
@Test
public void testIsEmpty(){
List first = new ArrayList<>();
List second = null;
List boy = new ArrayList<>();
//每个男孩心里都装着一个女孩
boy.add(new Girl());
//判断集合是否为空
System.out.println(CollectionUtils.isEmpty(first)); //true
System.out.println(CollectionUtils.isEmpty(second)); //true
System.out.println(CollectionUtils.isEmpty(boy)); //false
//判断集合是否不为空
System.out.println(CollectionUtils.isNotEmpty(first)); //false
System.out.println(CollectionUtils.isNotEmpty(second)); //false
System.out.println(CollectionUtils.isNotEmpty(boy)); //true
}
使用MapUtils.isEmpty方法和MapUtils.isNotEmpty方法对Map进行空判断。
boolean empty = MapUtils.isEmpty(map);
boolean notEmpty = MapUtils.isNotEmpty(map);
用于对数组的操作,如添加、查找、删除、子数组、倒序、元素类型转换等;
1.数组判空
ArrayUtils.isEmpty(new String[]{""});//结果是false
ArrayUtils.isEmpty(new String[]{});//结果是true
String[] array = null
ArrayUtils.isEmpty(array);//结果是true
2.ArrayUtils.addAll 合并两个数组
String[] array1 = new String[]{"0","1"};
String[] array2 = new new String[]{"2","3"};
String[] array3=(String[]) ArrayUtils.addAll(array1 ,array2 );//结果是:[0, 1, 2,3]
3.ArrayUtils.removeElement 删除数组中某个对象
String[] array=(String[]) ArrayUtils.removeElement(new String[]{"0","1x"}, "1x");
提供了一些对字符串处理的方法,请自行学习,下面简单举例:
isBlank:判断更严谨,包含的有空串("")、空白符(空格""," ",制表符"\t",回车符"\r","\n"等)以及null值;
isEmpty:包含是空串("")和null值,不包含空白符;
isNotBlank和isNotEmpty都是取反的,不再赘述;
例:DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss")
有了这个工具你还用自己去写下面这么多代码去实现吗?是不是简单效率呢
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间:" + sdf.format(d));