java取两个list的差集
时间: 2023-10-05 14:11:47 浏览: 222
可以使用Java 8中的Stream API来取两个List的差集,具体代码实现如下:
```java
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6, 7);
List<Integer> diff = list1.stream()
.filter(num -> !list2.contains(num))
.collect(Collectors.toList());
System.out.println(diff);
```
这段代码中,我们先分别定义了两个List,然后使用Stream API对list1进行过滤,保留其中不在list2中出现的元素,最后使用`collect`方法将结果收集到一个新的List中。最终输出的结果为`[1, 2]`,即list1与list2的差集。
相关问题
Java求两个list 差集
在Java中,如果你想要找出两个List的差集(即在一个列表中存在但在另一个列表中不存在的元素),你可以使用Set集合以及它们的减法操作。这里是一个简单的示例:
```java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
public List<Integer> findDifference(List<Integer> list1, List<Integer> list2) {
HashSet<Integer> set1 = new HashSet<>(list1);
HashSet<Integer> set2 = new HashSet<>(list2);
// 使用set的difference()方法获取差集
set1.removeAll(set2);
// 将结果转换回List并返回
return new ArrayList<>(set1);
}
// 示例
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(2);
list2.add(4);
list2.add(5);
List<Integer> diffList = findDifference(list1, list2); // diffList将会包含 [1, 3]
```
这个函数首先将每个List转换成HashSet,因为HashSet查找速度更快。然后使用`removeAll()`方法从set1中移除所有在set2中存在的元素,剩下的就是两个List的差集。
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);
}
}
```
阅读全文