java8求交集和差集
时间: 2024-02-06 20:45:40 浏览: 68
假设有两个集合A和B,可以使用Java8的Stream API来求它们的交集和差集。
1. 求交集
```java
Set<Integer> setA = new HashSet<>(Arrays.asList(1, 2, 3));
Set<Integer> setB = new HashSet<>(Arrays.asList(2, 3, 4));
Set<Integer> intersection = setA.stream()
.filter(setB::contains)
.collect(Collectors.toSet());
// 输出:[2, 3]
System.out.println(intersection);
```
2. 求差集
```java
Set<Integer> setA = new HashSet<>(Arrays.asList(1, 2, 3));
Set<Integer> setB = new HashSet<>(Arrays.asList(2, 3, 4));
Set<Integer> difference = Stream.concat(setA.stream(), setB.stream())
.filter(e -> !setA.contains(e) || !setB.contains(e))
.collect(Collectors.toSet());
// 输出:[1, 4]
System.out.println(difference);
```
相关问题
java求集合的交集、差集和并集
你可以使用Java中的集合类来找到集合的交集、差集和并集。Java中提供了Set接口和HashSet类,它们可以用于执行这些操作。
假设你有两个集合SetA和SetB,下面是如何获取它们的交集、差集和并集的示例代码:
1. 求交集:
```java
Set<Integer> intersection = new HashSet<>(SetA);
intersection.retainAll(SetB);
```
2. 求差集:
```java
Set<Integer> difference = new HashSet<>(SetA);
difference.removeAll(SetB);
```
3. 求并集:
```java
Set<Integer> union = new HashSet<>(SetA);
union.addAll(SetB);
```
请注意,上述示例假设你的集合中存储的是整数。根据实际情况,你需要调整代码中的数据类型。另外,这些操作也适用于其他类型的集合,只需将代码中的数据类型进行相应的更改即可。
希望这可以帮助到你!如果你有其他问题,请随时提问。
java commons获取交集差集
在Java中,Apache Commons Lang库提供了一些方便的功能来处理集合操作,包括交集(Intersection)、差集(Difference)等。如果你想获取两个集合的交集,可以使用`Collections.disjoint()`方法检查它们是否互斥,然后结合`retainAll()`或`intersection()`方法来得到交集。
例如,假设你有两个List:
```java
import org.apache.commons.lang3.Collections3;
List<String> list1 = Arrays.asList("A", "B", "C");
List<String> list2 = Arrays.asList("B", "D", "E");
// 检查两个列表是否有交集
boolean isDisjoint = Collections.disjoint(list1, list2);
if (!isDisjoint) {
// 获取交集
List<String> intersection = new ArrayList<>(list1);
intersection.retainAll(list2); // 或者 Collections3.intersection(list1, list2)
System.out.println("交集: " + intersection);
}
// 获取差集,这里我们先获取并删除交集再计算
List<String> difference = new ArrayList<>(list1);
difference.removeAll(intersection); // 或者 Collections3.difference(list1, list2)
System.out.println("差集: " + difference);
```
请注意,如果你使用的是较旧版本的Apache Commons Lang,可能会需要其他类(如`CommonsCollectionsUtils`)来找到替代方法。
阅读全文