public class CollectionOperationTest {
//定义两个集合list01,list02
private ArrayList<Integer> list01 = new ArrayList<>();
private ArrayList<Integer> list02 = new ArrayList<>();
/**
* 集合交集:取2个集合中,相同的部分(list01 交集 list02,取list01和list02中相同的元素)
* 两个集合的交集计算
*
* @throws Exception
*/
@Test
public void test() throws Exception {
Collections.addAll(list01, 1, 2, 3, 4);
Collections.addAll(list02, 3, 2, 1);
/**
* 1.通过ArrayList下的retainAll方法,如果list01和list02有相同元素,list01只保留相同的,去掉不同的。
* 如果没有相同元素,list01变为空
* retainAll 方法的返回值,在list1集合有变化就返沪true,没变化就返回false
*/
boolean retainAll = list01.retainAll(list02);
System.out.println(retainAll);
System.out.println(list01);
/**
* 2.使用stream api,通过filter和list的contains方法
*
*/
List<Integer> collect = list01.stream().filter(o -> list02.contains(o)).collect(Collectors.toList());
System.out.println(collect);
/**
* 3.通过HutoolCollectionUtils工具类的intersection方法
*/
Collection<Integer> intersection = CollectionUtil.intersection(list01, list02);
System.out.println(intersection);
}
/**
* 集合并集
*
* @throws Exception
*/
@Test
public void test02() throws Exception {
Collections.addAll(list01, 1, 2, 3, 4);
Collections.addAll(list02, 3, 2, 1);
/**
* 1.通过HashSet来进行去重处理,分别将list1,list2都放到set中
*/
HashSet<Integer> set = new HashSet<>();
set.addAll(list01);
set.addAll(list02);
System.out.println(set);
/**
* 2.通过Hutool中的CollectionUtils工具类的union方法
*/
Collection<Integer> union = CollectionUtil.union(list01, list02);
System.out.println(union);
}
/**
* 集合差集:取2个集合中,不相同的部分(list差集list2,取list1和list2不相同的元素)
* 两个集合的差集计算
*
* @throws Exception
*/
@Test
public void test03() throws Exception {
Collections.addAll(list01, 1, 2, 3, 4);
Collections.addAll(list02, 3, 2, 1, 8);
/**
* 1.通过ArrayList的removeAll方法
*/
boolean b = list01.removeAll(list02);
System.out.println(list01);
/**
* 2.通过Hutool中的CollectionUtils工具类的subtract方法
*/
Collection<Integer> subtract = CollectionUtil.subtract(list01, list02);
System.out.println(subtract);
}
/**
* 集合补集:取2个集合中,不相同的部分
*
* @throws Exception
*/
@Test
public void test04() throws Exception {
Collections.addAll(list01, 1, 2, 3, 4);
Collections.addAll(list02, 3, 2, 1);
Collection<Integer> disjunction = CollectionUtil.disjunction(list01, list02);
System.out.println(disjunction);
}
}
Java中解决集合中交、差、并、补集的几种方式
最新推荐文章于 2025-03-14 19:09:18 发布