CollectionUtils工具类之并集union(arr1,arr2)和差集subtract(arr1,arr2)
一、CollectionUtils工具类之并集union(arr1,arr2)和差集subtract(arr1,arr2)
①并集union(arr1,arr2)
这是将两个集合加在一起,然后去重
ListorderList1 = Arrays.asList(1, 2, 3); List orderList2 = Arrays.asList(3, 4, 5); List union = new ArrayList<>(CollectionUtils.union(orderList1, orderList2)); // 1,2,3,4,5 System.out.println("union = " + union);
②差集subtract(arr1,arr2)
这是将两个集合的差,如1,2,3 差集3,4,5就会得到1,2,将3这个重复的去掉
ListorderList1 = Arrays.asList(1, 2, 3); List orderList2 = Arrays.asList(3, 4, 5); List subtract = new ArrayList<>(CollectionUtils.subtract (orderList1, orderList2)); // 1,2 System.out.println("subtract = " + subtract );
③遇到的问题
返回值是父级的Collection
ListorderList1 = Arrays.asList(1, 2, 3); List orderList2 = Arrays.asList(3, 4, 5);
Collectionunion = CollectionUtils.union(orderList1, orderList2);
// 1,2,3,4,5 System.out.println("union = " + union);
如需要转换为对应的类型,如上转回List
方案1
Listunion = new ArrayList<>(CollectionUtils.union(orderList1, orderList2));
方案2
// 这个会警告,我们这里是加了一个.distinct()做过度
Listunion1 = CollectionUtils.union(orderList1, orderList2).stream().collect(Collectors.toList());