java求两个list集合的交集
时间: 2023-06-17 14:08:40 浏览: 141
可以使用Java 8中的Stream API和lambda表达式来实现两个List集合的交集。
示例代码如下:
```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()
.distinct()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println(intersection);
```
输出结果:
```
[3, 4, 5]
```
解释:
首先将list1的元素转换成一个Stream对象,使用distinct方法去重。然后使用filter方法筛选出list2中也包含的元素。最后使用collect方法将结果转换为List集合返回。
相关问题
java求两个集合的交集
你可以使用 Java 中的 Collection 类中的 retainAll() 方法来求两个集合的交集。例如:
```java
List<String> list1 = new ArrayList<>(Arrays.asList("a", "b", "c"));
List<String> list2 = new ArrayList<>(Arrays.asList("b", "c", "d"));
list1.retainAll(list2); // 求交集
System.out.println(list1); // 输出 [b, c]
```
这里我们将两个 List 集合转换成了 ArrayList 对象,并使用 retainAll() 方法求它们的交集。结果输出 [b, c],即为两个集合的交集。
Java求两个集合交集
在Java中,我们可以使用集合框架提供的`intersection()`或者`retainAll()`方法来找到两个集合的交集。以下是两种常见方法:
1. **使用`retainAll()`**:
```java
List<String> list1 = new ArrayList<>(Arrays.asList("a", "b", "c", "d"));
List<String> list2 = new ArrayList<>(Arrays.asList("b", "c", "e"));
// 使用 retainAll() 方法找出交集
list1.retainAll(list2);
System.out.println("Intersection: " + list1); // 输出: [b, c]
```
这里,`retainAll()`会从第一个列表删除所有不在第二个列表中的元素,剩下的就是它们的交集。
2. **使用`stream()`和`filter()`**:
```java
Set<String> set1 = new HashSet<>(Arrays.asList("a", "b", "c", "d"));
Set<String> set2 = new HashSet<>(Arrays.asList("b", "c", "e"));
// 使用 Stream API 寻找交集
set1.retainAll(set2.stream());
System.out.println("Intersection (Set): " + set1); // 输出: [b, c]
// 如果你想保持列表形式,可以转换回 List
List<String> listIntersection = set1.stream().collect(Collectors.toList());
System.out.println("Intersection (List): " + listIntersection); // 输出: [b, c]
```
这两种方法都会返回包含两个集合公共元素的结果。
阅读全文