Java 集合交集判断
- 一. 使用 retainAll()`方法
- 二. 使用 removeAll() 方法与判断集合大小
- 三. 使用 Stream 流式处理
- 四. 使用 Collections.disjoint() 方法
- 五. 总结
- 六. 参考文章
前言
这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。
作者:神的孩子都在歌唱
一. 使用 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()
提供了一个简单的现成方法来判断两个集合是否没有交集。
六. 参考文章
判断Set是否有交集
Java判断两个集合是否有交集
作者:神的孩子都在歌唱
本人博客:https://blog.csdn.net/weixin_46654114
转载说明:务必注明来源,附带本人博客连接。