[Java基础]Apache工具类--判断是否为空或为Null
1.Dependency
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
2.String Method
// 有一个为空则为true
System.out.println("isAnyBlank:" + StringUtils.isAnyBlank(null,"4","5"));
// 全部不为空则为true
System.out.println("isNoneBlank:" + StringUtils.isNoneBlank(null,"5"));
// 全部为空则为true
System.out.println("isAllBlank:" + StringUtils.isAllBlank(""," "));
// 如果字符串尚未以后缀结尾,则在字符串结尾追加后缀
System.out.println("appendIfMissing:" + StringUtils.appendIfMissing("hello","@")); // hello@
// 指定字符串不以某段字符串开头,则自动添加开头
System.out.println("prependIfMissing :" + StringUtils.prependIfMissing("hello","@")); // @hello
// 判断字符串是否以什么结尾
System.out.println("endsWith:" + StringUtils.endsWith("abcd.s@","@"));
// 首字母转大写
System.out.println("capitalize:" + StringUtils.capitalize("abcd.s@"));
// 首字母转小写
System.out.println("uncapitalize:" + StringUtils.uncapitalize("abcd.s@"));
// 从字符串中删除最后一个换行符\n、\r、\r\n
System.out.println("chomp :" + StringUtils.chomp("abcd.@569 \r"));
// 剔除字符串最后一个字符(如果最后一个是\n或\r\或\r\n也剔除掉)
System.out.println("chop :" + StringUtils.chop("abcd.@569 \r"));
System.out.println("chop :" + StringUtils.chop("abcd.@569"));
// 删除字符串中的全部空白,java 的trim只去除首尾的
System.out.println("deleteWhitespace :" + StringUtils.deleteWhitespace(" 测试字 符串 "));
// 比较两个字符串,并返回第二个字符串的剩余部分,从它与第一个不同的地方开始
System.out.println("difference :" + StringUtils.difference("abcd.s@","abcd.@569 \r"));
// 获得多个字符串相同的开头内容,接收参数为多个字符串
System.out.println("getCommonPrefix :" + StringUtils.getCommonPrefix("abc","ac","abcd")); // a
// 获取字符串中的数字
System.out.println("getDigits :" + StringUtils.getDigits("ckds123456cs6.9dkcm")); // 12345669
// 给字符串之间添加分隔符
System.out.println("joinWith :" + StringUtils.joinWith(",","abc25","abc")); // abc25,abc
// 字符串截取相当于substring,不同在于当截取字符超过源字符串长度不会报错
System.out.println("mid :" + StringUtils.mid("asdfg",1,8)); // sdfg
// 用另一个字符串覆盖字符串的一部分(覆盖开始,不覆盖结束)
System.out.println("overlay :" + StringUtils.overlay("abcdef", "zzzz", 2, 4)); // abzzzzef
// 替换字符串内容
System.out.println("replace :" + StringUtils.replace("aba", "a", "z")); // zbz
System.out.println("replaceOnce :" + StringUtils.replaceOnce("aba", "a", "z")); // zba
// 统计一字符串在另一字符串中出现次数
System.out.println("countMatches :" + StringUtils.countMatches("dcabcfccrt","c")); // 4
// 删除字符串中的指定内容
System.out.println("remove :" + StringUtils.remove("abcdef","c")); // abdef
// 删除字符串中结尾(满足是以某段内容结尾)
System.out.println("removeEnd :" + StringUtils.removeEnd("abcdef","ef")); // abcd
// 删除字符串中开头(满足是以某段内容开始)
System.out.println("removeStart :" + StringUtils.removeStart("abcdef","a")); // bcdef
// 重复字符
System.out.println("repeat :" + StringUtils.repeat("abcdef",5)); // abcdefabcdefabcdefabcdefabcdef
// 字符串翻转
System.out.println("reverse :" + StringUtils.reverse("abcdef")); // fedcba
// 根据指定分隔符进行反转,分隔符之间的字符不进行反转
System.out.println("reverseDelimited :" + StringUtils.reverseDelimited("abc,def",',')); // def,abc
// 将字符串后面指定个数的字符翻转到前面
System.out.println("rotate :" + StringUtils.rotate("abc,defgfd",3)); // gfdabc,def
// 截取指定字符串前面的内容,第一次出现的位置
System.out.println("substringBefore :" + StringUtils.substringBefore("abcba", "b")); // a
// 截取指定字符串前面的内容,最后一次出现的位置
System.out.println("substringBeforeLast :" + StringUtils.substringBeforeLast("abcba", "b")); // abc
// 截取指定字符串后面的内容,第一次出现的位置
System.out.println("substringAfter :" + StringUtils.substringAfter("abcba", "b")); // cab
// 截取指定字符串后面的内容,最后一次出现的位置
System.out.println("substringAfterLast :" + StringUtils.substringAfterLast("abcba", "b")); // a
// 截取指定字符串中间的内容
System.out.println("substringBetween :" + StringUtils.substringBetween("tagabctag", "tag")); // abc
System.out.println("substringBetween :" + StringUtils.substringBetween("yabczyabcz", "y", "z")); // abc
// 截断字符串 最大宽度科超过源字符串长度不会报错
System.out.println("truncate :" + StringUtils.truncate("abcba",6)); // abcba
3.Datetime Method
//日期转字符串
System.out.println("Date 转化为字符串 :" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
//字符串转日期
System.out.println("字符串 转 Date :" + DateUtils.parseDate("2022-12-19 22:00:00", "yyyy-MM-dd HH:mm:ss"));
//天数+1
Date now = new Date();
Date addDays = DateUtils.addDays(now, 1);
System.out.println("Date 加 1 天 :" + addDays);
//分钟+1
Date addMinutes = DateUtils.addMinutes(now, 30);
System.out.println("Date 加 30 分钟 :" + addMinutes);
//操作秒数
Date addSeconds = DateUtils.addSeconds(now, -180);
System.out.println("Date 减去 180 秒 :" + addSeconds);
//判断是否 为 同一天
System.out.println("Is Same Day:" + DateUtils.isSameDay(addDays, addMinutes));
//----------计时--------
// 创建之后立刻计时
StopWatch watch = StopWatch.createStarted();
// 模拟其他代码耗时
TimeUnit.SECONDS.sleep(2L);
System.out.println("统计从开始到现在运行时间:" + watch.getTime() + "ms"); //2000ms
TimeUnit.SECONDS.sleep(2L);
watch.split();
System.out.println("从start到此刻为止的时间:" + watch.getTime() + "ms"); //4000
System.out.println("从开始到第一个切入点运行时间:" + watch.getSplitTime() + "ms"); //4000
Thread.sleep(1000);
watch.split();
System.out.println("从开始到第二个切入点运行时间:" + watch.getSplitTime() + "ms"); //5001
watch.reset(); //重置后必须使用start方法
watch.start();
Thread.sleep(1000);
System.out.println("重新开始后到当前运行时间是:" + watch.getTime() + "ms"); //1000
watch.suspend(); //暂停
Thread.sleep(6000); //模拟暂停6秒钟
watch.resume(); //前面用了suspend,这里要想重新统计,需要恢复一下
System.out.println("恢复后执行的时间是:" + watch.getTime() + "ms"); //1000 注意此时这个值还是1000
watch.stop();
System.out.println("花费的时间 ==>" + watch.getTime() + "ms"); //1000ms
System.out.println("花费的时间 ==>" + watch.getTime(TimeUnit.SECONDS) + "s"); //1s 可以直接转成s
4.Collection Method
CollectionUtils.isEmpty(null): true
CollectionUtils.isEmpty(new ArrayList()): true
//并集
String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };
String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };
List<String> listA = Arrays.asList(arrayA);
List<String> listB = Arrays.asList(arrayB);
System.out.println(ArrayUtils.toString(CollectionUtils.union(listA, listB)));
//交集
String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };
String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };
List<String> listA = Arrays.asList(arrayA);
List<String> listB = Arrays.asList(arrayB);
//2个数组取交集
System.out.println(ArrayUtils.toString(CollectionUtils.intersection(listA, listB)));
//差集
String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };
String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };
List<String> listA = Arrays.asList(arrayA);
List<String> listB = Arrays.asList(arrayB);
//arrayA扣除arrayB
System.out.println(ArrayUtils.toString(CollectionUtils.subtract(listA, listB)));
CollectionUtils.isEqualCollection(listA, listB)