上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

Java判断两个集合是否具有交集以及如何获得交集

guduadmin12小时前

Java判断两个集合是否具有交集以及如何获得交集

  • 一、Java判断两个集合是否具有交集
    • 1、Collections.disjoint
    • 2、CollectionUtils.containsAny
    • 3、CollectionUtil.containsAny
    • 4、使用Java8的新特性
    • 二、获得两个集合的交集
      • 1、使用for循环
      • 2、使用Java8的forEach
      • 3、使用Java8的新特性

        一、Java判断两个集合是否具有交集

        1、Collections.disjoint

        全限定名为java.util.Collections,在俩个集合没有交集的时候会返回true,否则返回false。

        比如:

        List firstList = Arrays.asList("teacher", "worker", "student");
        List secondList = Arrays.asList("user", "admin");
        if (Collections.disjoint(firstList, secondList)) {
            System.out.println("Collections.disjoint方法:firstList、secondList没有交集");
        }
        

        结果:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第1张

        2、CollectionUtils.containsAny

        全限定名为:org.apache.commons.collections.CollectionUtils,两个集合有交集会返回true,否则会返回false,跟Collections.disjoint相反。

        例如:

        List firstList = Arrays.asList("teacher", "worker", "student");
        List secondList = Arrays.asList("user", "admin");
        if (CollectionUtils.containsAny(firstList, secondList)) {
            System.out.println("CollectionUtils.containsAny方法:firstList、secondList有交集");
        } else if (!CollectionUtils.containsAny(firstList, secondList)) {
            System.out.println("CollectionUtils.containsAny方法:firstList、secondList没有交集");
        }
        

        结果:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第2张

        3、CollectionUtil.containsAny

        全限定名为:cn.hutool.core.collection.CollectionUtil,两个集合有交集会返回true,否则会返回false,跟Collections.disjoint相反。

        比如:

         List firstList = Arrays.asList("teacher", "worker", "student");
         List secondList = Arrays.asList("user", "admin");
         if (CollectionUtil.containsAny(firstList, secondList)) {
             System.out.println("CollectionUtil.containsAny方法:firstList、secondList有交集");
         } else if (!CollectionUtil.containsAny(firstList, secondList)) {
             System.out.println("CollectionUtil.containsAny方法:firstList、secondList没有交集");
         }
        

        结果:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第3张

        4、使用Java8的新特性

        Java8中有两种方式可以得到两个集合是否有交集,如下:

        List firstList = Arrays.asList("teacher", "worker", "student");
        List secondList = Arrays.asList("user", "admin");
        //方式一
        //List resultList = firstList.stream().filter((firstItem) -> secondList.contains(firstItem)).collect(Collectors.toList());
        //方式二
        List resultList = firstList.stream().filter(secondList::contains).collect(Collectors.toList());
        if (resultList != null && resultList.size() > 0) {
            System.out.println("firstList、secondList有交集");
        } else {
            System.out.println("firstList、secondList没有交集");
        }
        

        结果:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第4张

        二、获得两个集合的交集

        1、使用for循环

        比如:

        public static void main(String[] args) {
            List firstList = Arrays.asList("teacher", "worker", "student", "driver");
            List secondList = Arrays.asList("user", "admin", "student", "driver");
            List resultList = new ArrayList<>();
            for (String item : firstList) {
                if (secondList.contains(item)) {
                    resultList.add(item);
                }
            }
            System.out.println(resultList);
        }
        

        结果:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第5张

        要是两个集合中存在重复元素,这样得到的结果是没有去重的,如果是:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第6张

        结果是:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第7张

        如果要去重可以加上

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第8张

        最终的代码:

        public static void main(String[] args) {
            List firstList = Arrays.asList("teacher", "worker", "student", "driver", "driver");
            List secondList = Arrays.asList("user", "admin", "student", "driver", "driver");
            List resultList = new ArrayList<>();
            for (String item : firstList) {
                if (secondList.contains(item) && !resultList.contains(item)) {
                    resultList.add(item);
                }
            }
            System.out.println(resultList);
        }
        

        这样得到的结果就是去重的了

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第9张

        也可以使用HashSet去重

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第10张

        结果:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第11张

        2、使用Java8的forEach

        比如:

        public static void main(String[] args) {
            List firstList = Arrays.asList("teacher", "worker", "student", "driver");
            List secondList = Arrays.asList("user", "admin", "student", "driver");
            List resultList = new ArrayList<>();
            if (firstList == null) {
                throw new RuntimeException("firstList为空!");
            }
            
            firstList.forEach((firstItem) -> {
                if (secondList.contains(firstItem)) {
                    resultList.add(firstItem);
                }
            });
            System.out.println(resultList);
        }
        

        结果:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第12张

        假如两个集合有相同的元素

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第13张

        和“二.1”一样,这样也是不能去重的

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第14张

        做法也是和上面那样

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第15张

        结果:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第16张

        或者用HashSet,也和“二.1”一样。

        3、使用Java8的新特性

        和“一.4”那样,有两种方式可以得到两集合的交集。

        代码如下:

        public static void main(String[] args) {
            List firstList = Arrays.asList("teacher", "worker", "student");
            List secondList = Arrays.asList("user", "admin", "student");
            //方式一
            List resultList = firstList.stream().filter((firstItem) -> secondList.contains(firstItem)).collect(Collectors.toList());
            //方式二
            //List resultList = firstList.stream().filter(secondList::contains).collect(Collectors.toList());
            System.out.println(resultList);
        }
        

        结果:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第17张

        和“二.1”、“二.2”那样也是不能去除重复元素的

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第18张

        结果:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第19张

        加上distinct就可以去重了

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第20张

        结果:

        Java判断两个集合是否具有交集以及如何获得交集,在这里插入图片描述,第21张

网友评论