介绍几个好用的工具类

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

The end is also the new beginning

最近真的是忙的飞起啊!!年前还得更新一个版本,啊难受啊…趁今天有空,上来冒个泡😆

好,入正题,今天介绍几个非常实用的工具类,可以减少我们重复造轮子,专注于具体的业务编写,提升生产效率,如果你还没有使用过这些工具类,强烈推荐去使用一下,你会发现代码清爽很多

1.apache-commons-lang3

相信大家在写代码的时候都会遇到,需要对字符串进行各种操作,例如判断是否为空,判断字符串是否全大/小写,是否包含某个字符串,是否以某个前缀开始/后缀结束,等等等等

由于String字符串提供的操作是有限的,不妨使用一下这个工具类感受一下


<dependency>
    <groupId>org.apache.commonsgroupId>
    <artifactId>commons-lang3artifactId>
    <version>3.7version>
dependency>

1.1 判断字符串是否为空

import org.apache.commons.lang3.StringUtils;
/**
* 判断字符串是否为空,【common--lang3】
* @param str 传入字符串
* @return 是否为空boolean值
*/
private static boolean commonlang3IsEmpty(String str) {
    return StringUtils.isEmpty(str);
}


//源码其实就是
return cs == null || cs.length() == 0;



1.2 判断字符串是否为空(空字符也算空)

import org.apache.commons.lang3.StringUtils;

//isBlank跟isEmpty的区别就在于,如果字符串是由一串空格组成的,isEmpty会返回false,isBlank会返回true
private static boolean commonlang3IsBlank(String str) {
	return StringUtils.isBlank(str);
}

//源码注释写的很清楚,这个方法会比isEmpty更加的严谨

1.3 同时判断多个字符串是否都为Empty,或者Blank

StringUtils.isAllEmpty(CharSequence... css);
StringUtils.isAllBlank(CharSequence... css);


1.4 判断字符串是否全大/小写

private static boolean isAllUpperCase(String str) {
    //判断小写,把Upper换成lower即可
	return StringUtils.isAllUpperCase(str);
}

//这个就很常用了,String中是没有这个方法的,就得使用Character.isUpperCase来一个一个字符的判断,属于重复造轮子

1.5 判断指定字符串是否以某个前缀开头(可以忽略大小写)

private static boolean isStartWithPrefix(String str, String prefix) {
    //忽略大小写 StringUtils.startsWithIgnoreCase(str, prefix);
    return StringUtils.startsWith(str, prefix);
}

//相似的,后缀suffix也是差不多的api StringUtils.endWith(String str,String suffix)

当然,commons中其实还有很多很有用的工具类,不仅仅只针对字符串方面的,我是使用StringUtils比较多,所以就拿它作为讲解,commons具体还有那些个方面的工具类,就由待你自己去发掘啦,比如时间格式化工具类、线程工具类、并发工具类等等

2.apache-commons-collections4

从包名应该就猜得出来,这是对集合进行操作的工具类,挑几个常用的方法来介绍一下

<dependency>
    <groupId>org.apache.commonsgroupId>
    <artifactId>commons-collections4artifactId>
    <version>4.0version>
dependency>

2.1 判断集合是否为空

private static boolean isCollectionEmpty(Collection collection) {
    return CollectionUtils.isEmpty(collection);
}

//注意接收的是Collection接口,所以所有实现了Collection的类都可以传入判断

2.2 返回两个集合的交/并集

这个是很常用的,某些场景我们需要对两个集合中的值进行操作,返回一个新的集合

//union -> 并集
private static Collection getUnion(Collection cola,Collection colb) {
    return CollectionUtils.union(cola, colb);
}

//构造两个list
List listA = Arrays.asList(1 ,2 ,3 ,4 ,5);
List listB = Arrays.asList(4,5,6,7);

//调用方法后的结果是
[1, 2, 3, 4, 5, 6, 7]

//intersection -> 交集
private static Collection getIntersection(Collection cola,Collection colb) {
 return CollectionUtils.intersection(cola, colb);
}

//同样还是上述两个list,操作之后
[4, 5]

2.3 过滤集合中不符合条件的元素

//第一个参数接收一个集合
//第二个参数是一个谓词判断条件,如果不为真就从集合中移除,这里就是想返回一个偶数列表
private static boolean filter(Collection collection) {
    return CollectionUtils.filter(collection,
                                  object -> object % 2 != 1);
}

//list 【0,1 ,2 ,3 ,4 ,5,6,7,8,9,10】

//调用方法后返回
[0, 2, 4, 6, 8, 10]

2.4 针对Map的MapUtils

2.4.1 判断Map是否为空
private static boolean isMapEmpty(Map,? map) {
   return MapUtils.isEmpty(map);
}

2.4.2 将Map的Value转换成对应的类型值

这里以getLongValue来做一个介绍

//可以注意到此时Map的key是String类型的,value也是String类型的,我们要把value转换成Long并且返回
private static Long getLongValue(Map map) {
    return MapUtils.getLongValue(map, "key1");
}

Map map = new HashMap<>();
map.put("key1", "12345");

Long longValue = getLongValue(map);
System.out.println(longValue);

//结果是longValue = 12345L

//如果传入String不是能转成Long类型的字符串,就会返回0,也可以通过重载方法,指定一个default值



MapUtils工具类提供了很多重载的形式,适合不同的场景使用

image-20220109165832157

2.4.3 将数组中的元素放到Map中
private static Map,?	putAll(Map,? map, Object[] array) {
    return MapUtils.putAll(map, array);
}
//如果传入的是一个二维数组
String[][] twoDimensionalArray = new String[][] {
    {"key1","value1"},
    {"key2","value2"},
    {"key3","value3"},
};

Map, ? map = putAll(new HashMap<>() ,twoDimensionalArray);
System.out.println(map);

结果:{key1=value1, key2=value2, key3=value3}

//如果传入的是一个一维数组

String[] array = new String[] {
    "key1","value1","key2","value2","key3","value3"
};

Map, ? map = putAll(new HashMap<>() ,array);
System.out.println(map);

结果:{key1=value1, key2=value2, key3=value3}, 如果传入的数组是有问题的,就会把对应的key-value抛弃
    也就是说,如果数组没有给出 "value3"这个元素,对应的key3就不会被添加到Map中

//如果传入的是Map.Entry
Map.Entry[] entries = new Map.Entry[] {
    new DefaultMapEntry("key1","value1"),
    new DefaultMapEntry("key2","value2"),
    new DefaultMapEntry("key3","value3")
};


Map, ? map = putAll(new HashMap<>() ,entries);
System.out.println(map);

结果:{key1=value1, key2=value2, key3=value3}

collection4这个包就介绍这么多,大家也可以去看下这个包还提供那些工具类,例如针对Set的、Queue的等等都有

3.Hutool工具类包

官网:点击打开

官方介绍:

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;

简而言之,里边包含了我们日常开发中的会应用到工具类的各个场景,例如

  • 时间的转换工具
  • 生成全局唯一id
  • 文件流的操作
  • 日志操作

具体的使用例子,直接看官方文档即可

总结

其实还是有很多其他很有用的工具类的,例如Google guava,上面没列出来的原因是(主要是懒了,有兴趣的去查查资料即可),找到适合使用的,足够稳定的,性能又可以的,就可以了,commons-collection4和guava都提供了对集合的简易操作,根据喜欢选其一就好

还得看业务场景的需要啊,有得用就用(稳定性得考虑好),没必要自己重复造轮子,造一大堆轮子,效率还可能没别人的好,既浪费时间也浪费精力,当然你说我就想自己造一个,那当然可以,这里也只是提出一个建议而已

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
许久以前用过Norton Commander,突然在前几年的某一天想起用它却找不到了,找到了这个Norton Command的替代品放在硬盘里,省得哪天丢了用它时又到处找,传上来保存着,网盘有时有些地方不好用甚至被屏蔽了。。。 --------------- 这个资料实际上时Dos Navigator的几个版本(1.0、4.5、2.7), 虽然有Total Commander、或Free Commander,但这个有时用用来娱乐一下,或者时碰到那老爷机(如SMT贴片机之类的操作系统,那可很多都是老爷机,用这个工具还是有效的) ---下面的文字只是一个其他相关工具的介绍--- 767K 这是DN的完全免费版本,十分小巧实用,界面不错,速度也很快,不过此版本不支持长文件名.可在其网上找到它的完整源代码. Norton Commander 5.5 2.7M 大名鼎鼎的文件管理器的最新版本,功能强大,而且全面支持长文件名. Volkov Commander 4.99 103K 很实用的NC的克隆品的最新版,支持FAT32和长文件名.它的功能很强大,比如可以同时操作两个窗口,且同时输入DOS命令,速度也非常快,支持鼠标操作,还有自定义菜单和设置等多种功能.2000.6.强烈推荐! DOS Navigator(DN) 2.70 1M 也是NC的模拟品,有着强大的功能和不错的界面,且完全支持长文件名.比如它支持DBF文件操作,16进制文件的显示与编辑,反汇编,文件的切割与组合,几十种压缩格式的管理,磁盘编辑,双机互联,电话拨号通讯,电子表格功能等等,还有许多附件,如计算器,万年历,名片管理,CD播放器,俄罗斯方块游戏等等.它现在正在不断发展中,这是今年7月的最新版.而且网友"DN爱好者"强烈向大家推荐. DOS Navigator(DN) 1.51 767K 这是DN的完全免费版本,十分小巧实用,界面不错,速度也很快,不过此版本不支持长文件名.可在其网上找到它的完整源代码. DOS Controller 38K 一个速度较快的NC克隆品,但不支持长文件名.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值