CollectionUtils工具类常用方法小结

2023-10-23 23:58

本文主要是介绍CollectionUtils工具类常用方法小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

集合判断: 
  例1: 判断集合是否为空:
  CollectionUtils.isEmpty(null): true
  CollectionUtils.isEmpty(new ArrayList()): true  
  CollectionUtils.isEmpty({a,b}): false

  例2: 判断集合是否不为空:
  CollectionUtils.isNotEmpty(null): false
  CollectionUtils.isNotEmpty(new ArrayList()): false
  CollectionUtils.isNotEmpty({a,b}): true

 

CollectionUtils在真实项目中,是一个非常好用的工具类,使用非常频繁。它可以使代码更加简洁和安全。刚好在工作中利用这个工具类重构代码,顺便总结下分享分享:

并集
@Test
public void testUnion(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };  String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//2个数组取并集 System.out.println(ArrayUtils.toString(CollectionUtils.union(listA, listB)));//[A, B, C, D, E, F, G, H, K]
}
交集
@Test
public void testIntersection(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };  String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//2个数组取交集 System.out.println(ArrayUtils.toString(CollectionUtils.intersection(listA, listB)));//[B, D, F]}
交集的补集(析取)
@Test
public void testDisjunction(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };  String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//2个数组取交集 的补集System.out.println(ArrayUtils.toString(CollectionUtils.disjunction(listA, listB)));//[A, C, E, G, H, K]
}
差集(扣除)
@Test
public void testSubtract(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };  String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//arrayA扣除arrayBSystem.out.println(ArrayUtils.toString(CollectionUtils.subtract(listA, listB)));//[A, C, E]}
集合是否为空
@Test
public void testIsEmpty(){class Person{}class Girl extends Person{}List<Integer> first = new ArrayList<>();List<Integer> second = null;List<Person> boy = new ArrayList<>();//每个男孩心里都装着一个女孩boy.add(new Girl());//判断集合是否为空System.out.println(CollectionUtils.isEmpty(first));   //trueSystem.out.println(CollectionUtils.isEmpty(second));   //trueSystem.out.println(CollectionUtils.isEmpty(boy));   //false//判断集合是否不为空System.out.println(CollectionUtils.isNotEmpty(first));   //falseSystem.out.println(CollectionUtils.isNotEmpty(second));   //falseSystem.out.println(CollectionUtils.isNotEmpty(boy));   //true
}
集合是否相等
@Test
public void testIsEqual(){class Person{}class Girl extends Person{}List<Integer> first = new ArrayList<>();List<Integer> second = new ArrayList<>();first.add(1);first.add(2);second.add(2);second.add(1);Girl goldGirl = new Girl();List<Person> boy1 = new ArrayList<>();//每个男孩心里都装着一个女孩boy1.add(new Girl());List<Person> boy2 = new ArrayList<>();//每个男孩心里都装着一个女孩boy2.add(new Girl());//比较两集合值System.out.println(CollectionUtils.isEqualCollection(first,second));   //trueSystem.out.println(CollectionUtils.isEqualCollection(first,boy1));   //falseSystem.out.println(CollectionUtils.isEqualCollection(boy1,boy2));   //falseList<Person> boy3 = new ArrayList<>();//每个男孩心里都装着一个女孩boy3.add(goldGirl);List<Person> boy4 = new ArrayList<>();boy4.add(goldGirl);System.out.println(CollectionUtils.isEqualCollection(boy3,boy4));   //true
}
不可修改的集合

我们对c进行操作,s也同样获得了和c相同的内容,这样就可以避免其他人员修改这个s对象。有时候需要对它进行保护,避免返回结果被人修改。

@Test
public void testUnmodifiableCollection(){Collection<String> c = new ArrayList<>();Collection<String> s = CollectionUtils.unmodifiableCollection(c);c.add("boy");c.add("love");c.add("girl");//! s.add("have a error");System.out.println(s);
}

这篇关于CollectionUtils工具类常用方法小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/271306

相关文章

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

Java中Arrays类和Collections类常用方法示例详解

《Java中Arrays类和Collections类常用方法示例详解》本文总结了Java中Arrays和Collections类的常用方法,涵盖数组填充、排序、搜索、复制、列表转换等操作,帮助开发者高... 目录Arrays.fill()相关用法Arrays.toString()Arrays.sort()A

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、