龙空技术网

分享几个好用的Java工具类

polebug22 212

前言:

眼前你们对“java工具类有哪些”可能比较注重,咱们都需要知道一些“java工具类有哪些”的相关内容。那么小编也在网摘上搜集了一些有关“java工具类有哪些””的相关内容,希望我们能喜欢,小伙伴们快快来学习一下吧!

前言

在编程过程中,经常涉及对字符串、集合等操作,但是往往使用jdk自带的方法,需要自己去判空,需要自己构建很多重复的代码,使得代码比较冗余,比较绕,为此推荐大家可以多使用工具类,提升代码稳定性的同时,提高代码的简洁。

字符串处理相关maven的pom依赖

<dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-lang3</artifactId>    <version>3.12.0</version></dependency>
最经典的工具类,StringUtils字符串判断相等

StringUtils.equals(str1 , str2) 字符串判断不推荐使用str1.equals(str2), 经常会导致空指针(NPE), 当然, Objects.equals(str1, str2) 工具类也可以

字符串判空

StringUtils.isNotBlank(str1)

使用场景如:上游参数校验时,判断 xxx 参数必须有值,不能为空

集合工具相关maven的pom依赖

<dependency>    <groupId>com.google.guava</groupId>    <artifactId>guava</artifactId>    <version>31.1-jre</version></dependency>  <dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-collections4</artifactId>    <version>4.4</version></dependency>
使用工具创建一个ArrayList

相比new ArrayList<>()方式,工具类采用Lists.newArrayList() 可以进行泛型的类型推导,而不用在<>中写明。

同时,支持不定入参,方便快速构建一个常量的List,使用场景,一般如:当前业务某些状态单据需要拦截,而需要拦截的单据状态是多个,

使用原生的,需要写成:new ArrayList<>(Arrays.asList(1,2,3)), 而采用工具类,只需要Lists.newArrayList(1, 2, 3), 相比较而言代码会简洁明了一些。

集合判空

集合判空是最常见的场景了,比如:入参是批量操作数据,需要对入参校验非空,否则就报错;或者是从集合中取对象需要先判断集合是否非空。

这里面非空就有两层含义了,一方面需要判断是否为null,另一方面需要判断size,如果不判断为null,那么直接空指针异常(NPE)。

所以常见需要写成:list != null && list.isEmpty() , 而 使用工具类 只用:CollectionUtils.isEmpty(list), 同时支持非空判断:CollectionUtils.isNotEmpty(list)

集合取交集,并集,差集。

如果有这一方面需求的场景,那采用这个工具能帮助你快速开发。

List<Integer> list1 = Lists.newArrayList(1, 2, 3);List<Integer> list2 = Lists.newArrayList(1, 2, 4);// 取交集,结果为 1,2Collection<Integer> intersection = CollectionUtils.intersection(list1, list2);// 取并集,结果为 1,2,3,4Collection<Integer> union = CollectionUtils.union(list1, list2);// 取对称差集,结果为3,4Collection<Integer> disjunction = CollectionUtils.disjunction(list1, list2);// 取差集,结果为 3Collection<Integer> subtract = CollectionUtils.subtract(list1, list2);
好用的数据结构Pair 和 Triple

一个方法只能有一个返回值,可以放在bean 或者 map ,这个方法可能是private的私有方法,仅做内部的计算等使用,使用bean或者map都大材小用了,可以使用更加轻量级的Pair 和 Triple。

其中 Pair 返回两个参数,Triple 是三个参数,里面可以放任意的对象。

以字符串举例:Pair.of("1", "2"); Triple.of("1", "2", "3")
Map工具pom依赖如上使用工具创建一个HashMap
Maps.newHashMap()
使用工具操作Map
// 判空MapUtils.isEmpty(map);MapUtils.isNotEmpty(map);// 取值List<String> valueList = MapUtils.getObject(map, key, Lists.newArrayList());

取值支持泛型,自动推导,最关键的是帮你判空了,即使map为null都没关系,而且支持不存在则返回默认值,第三个参数就是。

Map中value是List存值需要多重判断

Map<Integer, List<String>> map = Maps.newHashMap();if (map.containsKey(key)) {    map.get(key).add(value);} else {    map.put(key, Lists.newArrayList(value));}

可以看出,如果不进行多重判空,在进行处理的时候,一不小心就空指针了,而有了工具类就不用了。

ArrayListMultimap<Integer, String> arrayListMultimap = ArrayListMultimap.create();// 存进去很方便,开箱即用arrayListMultimap.put(key, value);// 取出来也很方便List<String> valueList = arrayListMultimap.get(key);// 同时也具有 线程安全版本Multimaps.synchronizedMultimap(arrayListMultimap);

写在最后:当然还有很多使用到的,就不一一列举,只写了笔者工作中高频使用的哈,还有哪些好用的慢慢学习。

标签: #java工具类有哪些 #java用到的软件 #java要用到的软件 #java好用的工具类