java8取出两个集合的交集
时间: 2023-12-05 16:30:04 浏览: 83
你可以使用Java 8中的stream API来取出两个集合的交集,这里给出一个示例代码:
```java
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6, 7);
List<Integer> intersection = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println(intersection); // 输出 [3, 4, 5]
```
在这个示例中,我们将两个集合转换为Java中的List对象,并使用Java 8中的stream API来遍历第一个集合list1,然后使用filter方法过滤出list2中包含的元素,最后使用collect方法将结果收集到一个新的List对象中。
相关问题
Java取出两个集合的交集
可以使用 Java 中的 `retainAll` 方法来取出两个集合的交集。这个方法会修改调用它的集合,使其只包含当前集合和指定集合中共有的元素。以下是示例代码:
```java
import java.util.*;
public class IntersectionExample {
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> set1 = new HashSet<>(list1);
Set<Integer> set2 = new HashSet<>(list2);
set1.retainAll(set2);
System.out.println("Intersection: " + set1);
}
}
```
上面的代码展示了如何使用 `retainAll` 方法来取出两个集合的交集。首先,我们将两个列表转换为集合,然后使用 `retainAll` 方法来修改 `set1`,以使其只包含 `set1` 和 `set2` 中共有的元素。最后,我们打印出结果集合。
java取出俩个集合中不同的内容
在Java中,你可以使用集合接口提供的交集(intersection)操作来获取两个集合中不同的元素。如果你有两个`Set`类型的集合(因为`Set`不允许有重复元素),可以使用`difference()`方法或者创建一个新的`HashSet`然后添加两个集合的所有元素再取差集。对于List类型的集合,通常需要先转换成Set再操作。
以下是两种常见的方式:
1. 对于Set集合:
```java
Set<String> setA = ...;
Set<String> setB = ...;
// 使用`difference()`方法获取不同元素
Set<String> differentElements = new HashSet<>(setA);
differentElements.removeAll(setB);
// 或者直接创建新Set并添加所有元素后再取差集
differentElements = new HashSet<>(setA.addAll(setB));
differentElements.removeAll(setA); // 现在differntElements就是setA中独有的
```
2. 对于List集合:
```java
List<String> listA = ...;
List<String> listB = ...;
// 先将List转为Set
Set<String> setA = new HashSet<>(listA);
Set<String> setB = new HashSet<>(listB);
// 获取不同元素
List<String> differentElements = new ArrayList<>(setA.difference(setB)); // 注意这是HashSet的difference方法
```
阅读全文