两个list集合对象交集
时间: 2024-09-13 10:12:49 浏览: 51
在Java中,两个List集合对象的交集可以通过多种方式实现。最常见的一种方法是使用`Collections`类的`retainAll`方法,该方法会修改调用它的List对象,只保留与指定集合共有的元素。以下是具体的步骤:
1. 使用`retainAll`方法:这个方法会将调用它的List对象中不包含在指定集合中的元素全部移除,从而使得这个List对象只包含与指定集合共有的元素。例如,如果有两个List对象listA和listB,调用listA.retainAll(listB)后,listA就只包含与listB的交集。
2. 使用Stream API(Java 8及以上版本):可以通过Stream API结合集合操作来获取两个List的交集。使用`stream()`方法将List转换为Stream对象,然后使用`filter()`方法过滤出两个List共有的元素,最后使用`collect(Collectors.toList())`收集结果到一个新的List中。
下面是使用`retainAll`方法获取交集的示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ListIntersectionExample {
public static void main(String[] args) {
List<Integer> listA = new ArrayList<>();
List<Integer> listB = new ArrayList<>();
// 填充listA和listB
Collections.addAll(listA, 1, 2, 3, 4, 5);
Collections.addAll(listB, 3, 4, 5, 6, 7);
// 使用retainAll方法获取交集
listA.retainAll(listB);
// 打印交集结果
System.out.println(listA); // 输出:[3, 4, 5]
}
}
```
使用Stream API获取交集的示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class ListIntersectionExample {
public static void main(String[] args) {
List<Integer> listA = new ArrayList<>();
List<Integer> listB = new ArrayList<>();
// 填充listA和listB
Collections.addAll(listA, 1, 2, 3, 4, 5);
Collections.addAll(listB, 3, 4, 5, 6, 7);
// 使用Stream API获取交集
List<Integer> intersection = listA.stream()
.filter(listB::contains)
.collect(Collectors.toList());
// 打印交集结果
System.out.println(intersection); // 输出:[3, 4, 5]
}
}
```
阅读全文