美文网首页
java判断两个集合是否有相同元素Collections.dis

java判断两个集合是否有相同元素Collections.dis

作者: 远古程序猿 | 来源:发表于2019-10-08 14:44 被阅读0次

Java接口定义

disjoint(Collection<?> c1, Collection<?> c2) 方法返回true表示两个collection中没有相同的元素。

disjoint()方法不需要传入类型相同的集合,只要实现collection接口即可。如果 c1 集合和 c2 集合没有相同元素返回true。如果传入参数为 null 会引发空指针异常。

disjoint在判断过程中对执行速度做了优化,因此比我们直接遍历两个list的效率要更高,尤其是第一个Collection为Set的情况下。具体实现逻辑,简单过一下源码:

代码的设计思想:

  • c1是Set则遍历c2,这样做的意图是因为Set的contains方法效率更高,Set本质是只有key没有value的Map,调用contains方法时其实调用的是map.containsKey()方法。
  • c1和c2都不是Set情况下,如果两个collcoection没有元素返回true,如果存在一个以上collcoection大小大于零,遍历较小的集合,这样做可以提升遍历速度。注释中还给了理论案例,比较好理解。

测试代码示例

List<String> list1 = new ArrayList<String>();
        list1.add("111");
        list1.add("222");
        list1.add("333");
        list1.add("444");

        List<String> list2 = new Vector<String>();
        list2.add("444");
        list2.add("555");

        List list3 = new LinkedList();
        list3.add(111);
        list3.add("~~~");

        Set<String> list4 = new HashSet<String>();
        list4.add("888");
        list4.add("999");

        Set<String> list5 = new HashSet<String>();
        list5.add("www");
        list5.add(null);

        List list6 = new ArrayList();

        List list7 = new ArrayList();

        Set<String> list8 = null;

        System.out.println("list1和list2是否有相同元素 : " + (Collections.disjoint(list1, list2) ? "否" : "是"));

        System.out.println("list1和list3是否有相同元素 : " + (Collections.disjoint(list1, list3) ? "否" : "是"));

        System.out.println("list1和list2是否有相同元素 : " + (Collections.disjoint(list1, list4) ? "否" : "是"));

        System.out.println("list1和list2是否有相同元素 : " + (Collections.disjoint(list4, list5) ? "否" : "是"));

        System.out.println("list6和list7是否有相同元素 : " + (Collections.disjoint(list6, list7) ? "否" : "是"));

        //下面代码引发空指针异常
//        System.out.println("list1和list2是否有相同元素 : " + (Collections.disjoint(list4, list8) ? "否" : "是"));

结果

list1和list2是否有相同元素 : 是
list1和list3是否有相同元素 : 否
list1和list4是否有相同元素 : 否
list4和list5是否有相同元素 : 否
list6和list7是否有相同元素 : 否

相关文章

  • java判断两个集合是否有相同元素Collections.dis

    Java接口定义 disjoint(Collection c1, Collection c2) 方法...

  • 不知道写什么的一天

    二维数组在控制台的输出 判断两个数组是否有相同元素 Java substring() 方法:substring()...

  • 哈希表

    哈希表确定元素是否相同 1. 判断的是两个元素的哈希值是否相同 如果相同,再判断两个对象的内容是否相同。 2. 判...

  • Kotlin集合操作符

    总数操作符: any:判断集合中是否有满足条件的元素 all:判断集合中的元素是否都满足条件 none:判断集合是...

  • 判断List集合为空或null

    判断List集合是否为空 Java中,判断List集合是否为空与是否为null并不相同 新建List对象,默认是为...

  • JAVA集合------萌新学习之路,SET接口

    Set接口 Set集合不允许有重复元素,判断两个Set集合元素是否相等使用equals比较,而不是==,set集合...

  • JS数据结构和算法 - 集合

    什么是集合? 集合是由一组无序且唯一的元素组成(集合中没有重复项 - 集合中的元素使用===来判断是否相同) 实现...

  • 并发修改异常

    案例:判断集合中是否存在java,如果有则添加android且遍历集合元素 方法一:使用collection集合中...

  • kotlin集合操作

    1.1 总数操作 方法作用: any--判断集合中是否有满足条件 的元素; all--判断集合中的元素是否都满足条...

  • String中equals方法

    Java中使用“==”来判断两个对象是否相等是判断两个对象的引用是否相同Java中使用“equals”来判断两个对...

网友评论

      本文标题:java判断两个集合是否有相同元素Collections.dis

      本文链接:https://www.haomeiwen.com/subject/kpfjyctx.html