取list的交集还有差集
时间: 2023-11-20 16:07:48 浏览: 32
可以使用Java中的retainAll()方法来取两个list的交集,使用removeAll()方法来取两个list的差集。具体实现可以参考以下代码:
//取交集
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4, 5, 6));
list1.retainAll(list2); //list1中只保留与list2共同的元素
System.out.println(list1); //输出[3, 4]
//取差集
List<Integer> list3 = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
List<Integer> list4 = new ArrayList<>(Arrays.asList(3, 4, 5, 6));
list3.removeAll(list4); //从list3中移除与list4共同的元素
System.out.println(list3); //输出[1, 2]
需要注意的是,retainAll()和removeAll()方法都会修改原始的list,如果不想修改原始的list,可以先将原始的list复制一份再进行操作。
相关问题
java 两个list取差集
在Java中,我们可以使用List接口中的retainAll()方法来取两个List的交集,也可以使用removeAll()方法来取两个List的差集。下面是一个示例代码:
```
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4, 5, 6, 7));
list1.removeAll(list2); //取差集
System.out.println(list1); //[1, 2]
```
上述代码中,我们首先创建了两个List对象list1和list2,并分别初始化为包含一些整数的ArrayList对象。然后,我们使用removeAll()方法来取list1和list2的差集,即从list1中删除与list2相同的元素。最后,我们输出list1的内容,可以看到结果为[1, 2],即取差集的结果。
java 两个list取差集 并集 差集
在 Java 中,可以通过集合框架中的 Set 接口来实现两个 List 的取差集、并集和交集操作。
对于两个 List 取并集,可以先将一个 List 加入到 Set 中,然后再将另一个 List 的元素加入到 Set 中。这样就可以去掉重复元素,得到两个 List 的并集。
对于两个 List 取交集,同样可以先将一个 List 加入到 Set 中,然后再遍历另一个 List,将其元素与 Set 中的元素比较,如果相同就将其加入到另一个 Set 中,最后得到的就是两个 List 的交集。
对于两个 List 取差集,可以先将一个 List 加入到 Set 中,然后再遍历另一个 List,将其元素从 Set 中移除,最后得到的就是两个 List 的差集。
下面是示例代码:
```
import java.util.*;
public class Test {
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8);
// 求并集
Set<Integer> union = new HashSet<>(list1);
union.addAll(list2);
System.out.println("并集:" + union);
// 求交集
Set<Integer> intersection = new HashSet<>(list1);
intersection.retainAll(list2);
System.out.println("交集:" + intersection);
// 求差集
Set<Integer> difference = new HashSet<>(list1);
difference.removeAll(list2);
System.out.println("差集:" + difference);
}
}
```