「Java工具类」Apache的ArrayUtils和CollectionUtils工具类
介绍语
本号主要是Java常用关键技术点,通用工具类的分享;以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+docker等集成框架的技术分享;datax、kafka、flink等大数据处理框架的技术分享。文章会不断更新,欢迎码友关注点赞收藏转发!
望各位码友点击关注,冲1000粉。后面会录制一些视频教程,图文和视频结合,比如:图书介绍网站系统、抢购系统、大数据中台系统等。技术才是程序猿的最爱,码友们冲啊
如果码友觉得代码太长,可以从头到尾快速扫射一遍,了解大概即可。觉得有用后再转发收藏,以备不时之需。
正文:
Apache的ArrayUtils数组工具类和CollectionUtils集合工具类,两个工具类使用的相对比较少,和StringUtils字符串工具类就显得更少了。
-
ArrayUtils 数组工具类,使用的频率比较少,了解即可;
-
CollectionUtils 集合工具类,使用的频率比较少,了解即可;集合工具类在spring中也有。
ArrayUtils使用例子#
import org.apache.commons.lang3.ArrayUtils;
import java.util.Map;
public class ArrayUtilsTest {
public static void main(String[] args) {
String[] array = {"Hello", "BCD", "Java"};
String[] newArray = ArrayUtils.add(array, "ABc");
System.out.println(ArrayUtils.toString(newArray));
// newArray = {Hello,BCD,Java,ABc}
ArrayUtils.reverse(newArray);
// newArray = {ABc,Java,BCD,Hello}
System.out.println(ArrayUtils.indexOf(newArray, "BCD"));
// 2
newArray = ArrayUtils.insert(2, newArray, "ABc");
// newArray = {ABc,Java,ABc,BCD,Hello}
System.out.println(ArrayUtils.lastIndexOf(newArray, "ABc"));
// 2
String[] subarray = ArrayUtils.subarray(newArray, 1, 3);
// subarray = {Java,ABc}
System.out.println(ArrayUtils.isSorted(newArray));
// false
System.out.println(ArrayUtils.isSameLength(array, newArray));
// false
System.out.println(ArrayUtils.isSameType(array, newArray));
// true
String[] remove = ArrayUtils.remove(newArray, 2);
// {ABc,Java,BCD,Hello}
remove = ArrayUtils.removeElement(remove, "BCD");
// {ABc,Java,Hello}
remove = ArrayUtils.removeElements(remove, "ABc");
// {Java,Hello}
Object[] ints = {2, 1, 5, 8, 4, 6, 9};
String[] stringArray = ArrayUtils.toStringArray(ints);
System.out.println(ArrayUtils.toString(stringArray));
// stringArray = {2,1,5,8,4,6,9}
String[][] ss = {{"name", "zhang"},{"age", "12"}};
Map<Object, Object> m = ArrayUtils.toMap(ss);
// m = {name=zhang, age=12}
}
}
CollectionUtils使用例子#
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public class CollectionUtilsTest {
public static void main(String[] args) {
List<String> listA = new ArrayList<>();
System.out.println(CollectionUtils.isEmpty(listA));
// true
System.out.println(CollectionUtils.isNotEmpty(listA));
// false
listA.add("aa");
List<String> listB = new ArrayList<>();
CollectionUtils.addIgnoreNull(listB, null);
System.out.println(ArrayUtils.toString(listB));
// []
CollectionUtils.addIgnoreNull(listB, "bb");
CollectionUtils.addAll(listB, listA);
System.out.println(ArrayUtils.toString(listB));
// [bb, aa]
// 差集,在B中找出A没有的元素
Collection<String> subtract1 = CollectionUtils.subtract(listB, listA);
System.out.println(ArrayUtils.toString(subtract1));
// [bb]
// 差集,在A中找出B没有的元素
Collection<String> subtract2 = CollectionUtils.subtract(listA, listB);
System.out.println(ArrayUtils.toString(subtract2));
// []
// 并集,合并A、B的元素,去掉重复的元素
Collection<String> union = CollectionUtils.union(listA, listB);
System.out.println(ArrayUtils.toString(union));
// [aa, bb]
// 交集,找出A、B的共同的元素
Collection<String> intersection = CollectionUtils.intersection(listA, listB);
System.out.println(ArrayUtils.toString(intersection));
// [aa]
// 移除B中有的A元素
Collection<String> c1 = CollectionUtils.removeAll(listB, listA);
System.out.println(ArrayUtils.toString(c1));
// [bb]
// 计算集合中元素出现的次数
CollectionUtils.addIgnoreNull(listB, "bb");
Map<String, Integer> m = CollectionUtils.getCardinalityMap(listB);
System.out.println(m);
// {bb=2, aa=1}
}
}
工具类源码:
直接引入工具类的jar包即可
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
类似工具类org.springframework.util.CollectionUtils,这个工具类用的可能还多点,不过还是要看项目的情况。建议可以看下这个工具类。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.6</version>
</dependency>
字符串处理工具类,数组集合工具类,这些经典的工具类其实在很多常见的框架中都有的,同学们要善于发现。
鄙人编码十年多,在项目中也积累了一些工具类,很多工具类在每个项目都有在用,很实用。大部分是鄙人封装的,有些工具类是同事封装的,有些工具类已经不记得是ctrl+c的还是自己封装的了,现在有空就会总结项目中大部分的工具类,分享给各位码友。如果文章中涉及的代码有侵权行为请通知鄙人处理。
计划是先把工具类整理出来,正所谓工欲善其事,必先利其器。项目中不管是普通单体项目还是多模块maven项目或是分布式微服务,一部分功能模块都是可以重用的,工具类模块就是其中之一。
作者:Java夜未眠
出处:https://www.cnblogs.com/liangxianning/p/17058232.html
版权声明:本博客所有文章除特别声明外,均采用「 MIT 许可协议。」许可协议进行许可
关于博主: 评论和私信会可能回复较慢,点击上面加人图标加我为好友吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)