两个集合如何求交集 java

两个集合如何求交集 java

作者:William Gu发布时间:2026-02-13阅读时长:0 分钟阅读次数:1

用户关注问题

Q
如何用Java找出两个集合的公共元素?

我有两个集合,想找出它们之间的共同元素,应该用什么方法?

A

使用retainAll方法求交集

Java中可以通过集合的retainAll方法来找到两个集合的交集。调用该方法后,集合会只保留与另一个集合相同的元素,示例代码如下:

Set set1 = new HashSet<>(Arrays.asList("a", "b", "c"));
Set set2 = new HashSet<>(Arrays.asList("b", "c", "d"));
set1.retainAll(set2);
// set1现在包含"b"和"c"

Q
使用Java Stream API如何求两个集合的交集?

有没有方法可以用Java的Stream流来求两个集合的交集?

A

通过Stream过滤进行交集运算

可以利用Stream API的filter方法结合集合contains来实现交集。示例代码:

List list1 = Arrays.asList("a", "b", "c");
List list2 = Arrays.asList("b", "c", "d");

List intersect = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());

// intersect包含"b"和"c"

Q
Java中求交集时需要注意什么类型和性能问题?

在Java中求两个集合的交集过程中,有没有需要注意的集合类型或者性能方面的建议?

A

选择合适集合类型和注意时间复杂度

如果两个集合较大,建议使用HashSet来存储集合元素,因为HashSet的contains方法时间复杂度为O(1),可以提升效率。使用retainAll方法时,如果调用方集合是HashSet,性能更好。避免在List上调用retainAll,因为contains为O(n),可能性能较差。