Collections.disjoint(Collection<?> c1, Collection<?> c2) 是 Java 标准库 java.util.Collections 类中的一个静态工具方法,用于判断两个集合是否不相交(即没有共同元素)。
方法签名
public static boolean disjoint(Collection<?> c1, Collection<?> c2)
功能说明
- 如果两个集合 没有任何公共元素,则返回
true; - 否则(即至少有一个公共元素),返回
false; - 如果任一集合为
null,会抛出NullPointerException。
使用示例
import java.util.*;
public class DisjointExample {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("apple", "banana");
List<String> list2 = Arrays.asList("orange", "grape");
List<String> list3 = Arrays.asList("banana", "kiwi");
System.out.println(Collections.disjoint(list1, list2)); // true
System.out.println(Collections.disjoint(list1, list3)); // false
}
}
性能提示
- 该方法内部会根据两个集合的大小选择较小的那个转换为
Set(如果还不是 Set),以提高查找效率。 - 因此,如果其中一个集合已经是
Set(如HashSet),性能会更好。 - 最坏时间复杂度约为 O(n × m),但通常优化后接近 O(n + m)。
注意事项
- 元素的“相等”是通过
equals()方法判断的; - 若集合中包含
null元素,只要两个集合都包含null,就会被认为有交集(因为null.equals(null)虽不调用,但contains(null)可以正确识别); - 此方法不会修改传入的集合。
版权所有 © 【代码谷】 欢迎非商用转载,转载请按下面格式注明出处,商业转载请联系授权,违者必究。(提示:点击下方内容复制出处)
源文: Java 集合工具探秘:用 Collections.disjoint 高效判断集合是否不相交 ,链接:https://www.daimagu.com/article/2512110841077532.html,来源:代码谷
评论