前言
有喜欢看代码的领导吗?我的领导喜欢读我写的代码。如果有问题,他们喜欢和我讨论怎么写。哈哈哈...挺好的。
今天我们来看看可以节省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有很多工具类,但这里只列出了一小部分,在官网的例子中可以找到各种用法。