欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 集合并集交集差集【工具类】

集合并集交集差集【工具类】

2025/9/14 19:50:44 来源:https://blog.csdn.net/weixin_42039228/article/details/139657539  浏览:    关键词:集合并集交集差集【工具类】

一、使用Stream流进行处理

在Java开发中,对于集合的操作是非常常见的,特别是交集、并集和差集这样的操作。这些操作可以通过Java 8中的Stream API来实现。
•交集:取两个集合中相同的部分。例如,如果我们有两个List集合:list1和list2,我们可以使用list1.stream().filter(list2::contains).collect(Collectors.toList())来获取它们的交集。
•并集:将两个集合合并为一个集合。同样使用Stream API,我们可以使用Stream.concat(list1.stream(), list2.stream()).collect(Collectors.toList())来得到两个集合的并集。此外,还可以通过先将两个集合合并,然后使用distinct()方法去重,最后将结果收集到一个新的集合中来获得并集。
•差集:取两个集合中不相同的部分。例如,使用list1.stream().filter(item -> !list2.contains(item)).collect(toList())可以获取list1相对于list2的差集。同样地,我们也可以获取list2相对于list1的差集。

二、使用commons包处理

推荐使用封装后的工具类进行处理,代码如下所示:

import org.apache.commons.collections.CollectionUtils;
import java.util.List;/*** 集合 并集 交集 差集* @param <T>*/
public class CollectionHigherOrderUtils<T> {/*** 获取两个列表的并集** @param list  第一个列表* @param list2 第二个列表* @return 两个列表的并集,如果任一列表为null,则返回null*/public static <T> List<T> unionList(List<T> list, List<T> list2) {if (list == null || list2 == null) {return null; // 或者你可以返回一个空的列表}return (List<T>) CollectionUtils.union(list, list2);}/*** 获取两个列表的交集** @param list  第一个列表* @param list2 第二个列表* @return 两个列表的交集,如果任一列表为null,则返回null*/public static <T> List<T> intersectionList(List<T> list, List<T> list2) {if (list == null || list2 == null) {return null; // 或者你可以返回一个空的列表}return (List<T>) CollectionUtils.intersection(list, list2);}/*** 获取两个列表的对称差集(即只在一个列表中出现的元素)** @param list  第一个列表* @param list2 第二个列表* @return 两个列表的对称差集,如果任一列表为null,则返回null*/public static <T> List<T> symmetricDifferenceList(List<T> list, List<T> list2) {if (list == null || list2 == null) {return null; // 或者你可以返回一个空的列表}return (List<T>) CollectionUtils.disjunction(list, list2);}/*** 获取第一个列表中存在但第二个列表中不存在的元素(即差集)** @param list  第一个列表* @param list2 第二个列表* @return 第一个列表的差集,如果任一列表为null,则返回null*/public static <T> List<T> subtractList(List<T> list, List<T> list2) {if (list == null || list2 == null) {return null; // 或者你可以返回一个空的列表}return (List<T>) CollectionUtils.subtract(list, list2);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词