工具类 Java 中节省 90% 时间的常用的工具类

栏目:教育 2021-09-25 21:16:04
分享到:

前言

有喜欢看代码的领导吗?我的领导喜欢读我写的代码。如果有问题,他们喜欢和我讨论怎么写。哈哈哈...挺好的。

今天我们来看看可以节省90%加班时间的第三方开源库。第一个介绍一定是Apache下的Commons库。第二个是谷歌的开源番石榴库。

阿帕奇公地

Apache Commons是一个非常强大且经常使用的库。它有大约40个类库,包括对字符串、日期、数组等的操作。

Lang3

Lang3是一个用于处理Java中基本对象的包,比如操作字符串的StringUtils类、操作数组的ArrayUtils类、处理日期的DateUtils类、返回多个字段的MutablePair类等等。

包装结构:

Maven依赖

字符串操作

在字符串上快速操作,在if else中少写判断空的情况下。

输出结果:

日期操作

最后,不用SimpleDateFormat就可以格式化日期,DateUtils.iterator可以暂时得到它。

输出结果:

返回多个字段

有时当需要在一个方法中返回多个值时,通常使用HashMap或JSON来返回。Lang3已经为我们提供了这样一个工具类,所以我们不再需要编写HashMap和JSON了。

输出结果:

数组操作

ArrayUtils是一个专门处理数组的类,这使得处理数组变得很方便,而不需要各种循环操作。

输出结果:

枚举操作

GetEnum通过类返回一个枚举,该枚举可能返回空;

GetEnumList通过类返回枚举集合;

GetEnumMap返回映射;通过类枚举;

IsValidEnum验证枚举中是否有enumName,并返回true或false。

输出结果:

收集4收集操作

commons-collection 4增强了Java集合框架,提供了一系列简单的API方便操作的集合。

Maven依赖

CollectionUtils工具类

这是一个工具类,可以检查两个列表的集合、合并列表、过滤列表、并集、差集和并集没有添加空元素。Java 8中有些函数可以用Stream API代替。

输出结果:

包统计次数

用于计算一个值在集合中出现的次数。

输出结果:

Beanutils Bean操作

Beanutils通过反射机制操作JavaBean。例如,复制Bean、将地图转换为对象以及将对象转换为地图。

Maven依赖

输出结果:

番石榴

谷歌基于Java的开源扩展项目包括一些基础工具、集合扩展、缓存、并发工具包、字符串处理等。

Maven依赖

地图类型

在java代码中,我们经常会遇到编写Map map局部变量的需求。有时候业务情况有点复杂。

输出结果:

值不能重复的地图

“地图”中值的值可以重复。番石榴可以创建一个值不可重复的地图,地图和值可以切换。

输出结果:

输出结果:

番石榴缓存

写业务的时候,肯定会用到缓存。不想用第三方做缓存,地图不够强的时候,可以用番石榴的缓存。

缓存的并发级别

Guava提供并发级别的设置,使得缓存支持并发读写。类似于,番石榴缓存的并发是通过分离锁来实现的。在正常情况下,建议将并发级别设置为服务器的cpu内核数量。

缓存的初始容量设置

当我们构建缓存时,我们可以为缓存设置一个合理的初始容量。因为番石榴的缓存采用了分离锁的机制,扩展的成本非常昂贵。因此,合理的初始容量可以减少缓存容器的扩展次数。

设置最大存储量

Guava Cache可以指定在构建缓存对象时缓存可以存储的最大记录数。当缓存中的记录数达到最大值时,调用put方法向其中添加一个对象。番石榴将从当前缓存的对象记录中选择一个进行删除,然后在空之后将新对象保存在缓存中。

输出结果:

到期时间

expireafteraccession可以设置缓存的到期时间。

输出结果:

加载缓存

使用自定义加载数据并将其放入内存。从中获取数据时,如果数据存在,直接返回;如果数据不存在,请根据的方法将数据加载到内存中,然后返回数据。

输出结果:

摘要

Apache Commons和Guava这两个第三方开源工具库可以减少loop和ifelse的代码。编写的代码更加健壮,可以在新人面前安装一波。Apache Commons和Guava有很多工具类,但这里只列出了一小部分,在官网的例子中可以找到各种用法。