Java 集合交集判断
Java 集合交集判断
前言
这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。
一. 使用 retainAll()
方法
retainAll()
是 Java Collection
接口中的一个方法,它用于保留集合中与另一个集合的交集部分。可以通过判断操作后的集合是否为空来确定是否有交集。
示例代码:
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class IntersectionExample {
public static void main(String[] args) {
Set<String> set1 = new HashSet<>(Arrays.asList("A", "B", "C"));
Set<String> set2 = new HashSet<>(Arrays.asList("B", "C", "D"));
// 创建一个副本以避免修改原始集合
Set<String> intersection = new HashSet<>(set1);
intersection.retainAll(set2);
if (!intersection.isEmpty()) {
System.out.println("两个集合有交集: " + intersection);
} else {
System.out.println("两个集合没有交集");
}
}
}
输出结果:
两个集合有交集: [B, C]
解释:
-
retainAll()
方法将set1
中与set2
共有的元素保留下来,并删除其他元素。 -
如果
intersection
集合不为空,说明两个集合有交集。
二. 使用 removeAll()
方法与判断集合大小
removeAll()
方法会从集合中移除与另一个集合的所有交集元素。如果移除后集合大小发生变化,则说明两个集合有交集。
示例代码:
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class RemoveAllExample {
public static void main(String[] args) {
Set<String> set1 = new HashSet<>(Arrays.asList("A", "B", "C"));
Set<String> set2 = new HashSet<>(Arrays.asList("B", "C", "D"));
int originalSize = set1.size();
set1.removeAll(set2);
if (set1.size() < originalSize) {
System.out.println("两个集合有交集");
} else {
System.out.println("两个集合没有交集");
}
}
}
输出结果:
两个集合有交集
解释:
-
removeAll()
方法删除了set1
中与set2
的交集部分。 -
通过比较操作前后的集合大小,判断是否存在交集。
三. 使用 Stream
流式处理
Java 8 引入了 Stream
,可以通过 anyMatch()
方法检查一个集合中的元素是否出现在另一个集合中。
示例代码:
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class StreamExample {
public static void main(String[] args) {
Set<String> set1 = new HashSet<>(Arrays.asList("A", "B", "C"));
Set<String> set2 = new HashSet<>(Arrays.asList("B", "C", "D"));
boolean hasIntersection = set1.stream().anyMatch(set2::contains);
if (hasIntersection) {
System.out.println("两个集合有交集");
} else {
System.out.println("两个集合没有交集");
}
}
}
输出结果:
两个集合有交集
解释:
-
anyMatch()
方法检查set1
中是否存在任意一个元素出现在set2
中。 -
这种方式使用流式处理,简洁而高效。
四. 使用 Collections.disjoint()
方法
Collections.disjoint()
是 Java 提供的一个专用方法,用于检查两个集合是否没有交集。
示例代码:
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
public class DisjointExample {
public static void main(String[] args) {
Set<String> set1 = new HashSet<>(Arrays.asList("A", "B", "C"));
Set<String> set2 = new HashSet<>(Arrays.asList("B", "C", "D"));
boolean noIntersection = Collections.disjoint(set1, set2);
if (!noIntersection) {
System.out.println("两个集合有交集");
} else {
System.out.println("两个集合没有交集");
}
}
}
输出结果:
两个集合有交集
解释:
-
Collections.disjoint()
返回true
表示两个集合没有交集,返回false
则说明有交集。
五. 总结
-
retainAll()
方法最直接,通过修改集合保留交集。 -
removeAll()
可用于判断交集,同时消除交集元素。 -
Stream
方法在 Java 8 之后提供了一种简洁的方式。 -
Collections.disjoint()
提供了一个简单的现成方法来判断两个集合是否没有交集。
六. 参考文章
作者:神的孩子都在歌唱
本人博客:https://blog.csdn.net/weixin_46654114
- 点赞
- 收藏
- 关注作者
评论(0)