在业务中我们常会遇到需要获取两个List取交集或差集、并集的情况,最直观的解决方法就是通过遍历去进行查找再比较,这种做法肯定是可以的,但会显得很麻烦。
在Java中可以直接使用第三方库
org.apache.commons.collections.ListUtils
首先针对结合中的对象需要重写 hashcode() 和 equals() 方法。这是因为intersection()和removeAll()会去利用对象的这两个方法来比较对象是否是同一个对象。
假设我们现在有两个集合list1和list2
要得到在list1中不包含在list2中的集合
// 差集
List<Integer> result = ListUtils.removeAll(list1, list2);
要得到在list1和list2中共有的集合
// 交集
List<Integer> result2 = ListUtils.intersection(list1, list2);
要得到在list1和list2中的所有集合
// 并集
List<Integer> result3 = ListUtils.sum(list1, list2);