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

这篇具有很好参考价值的文章主要介绍了Java判断两个集合是否具有交集以及如何获得交集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1、Collections.disjoint

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

比如:

List<String> firstList = Arrays.asList("teacher", "worker", "student");
List<String> secondList = Arrays.asList("user", "admin");

if (Collections.disjoint(firstList, secondList)) {
    System.out.println("Collections.disjoint方法:firstList、secondList没有交集");
}

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

2、CollectionUtils.containsAny

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

例如:

List<String> firstList = Arrays.asList("teacher", "worker", "student");
List<String> 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判断两个集合是否具有交集以及如何获得交集

3、CollectionUtil.containsAny

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

比如:

 List<String> firstList = Arrays.asList("teacher", "worker", "student");
 List<String> 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判断两个集合是否具有交集以及如何获得交集

4、使用Java8的新特性

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

List<String> firstList = Arrays.asList("teacher", "worker", "student");
List<String> secondList = Arrays.asList("user", "admin");

//方式一
//List<String> resultList = firstList.stream().filter((firstItem) -> secondList.contains(firstItem)).collect(Collectors.toList());

//方式二
List<String> 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判断两个集合是否具有交集以及如何获得交集

二、获得两个集合的交集

1、使用for循环

比如:

public static void main(String[] args) {
    List<String> firstList = Arrays.asList("teacher", "worker", "student", "driver");
    List<String> secondList = Arrays.asList("user", "admin", "student", "driver");

    List<String> resultList = new ArrayList<>();
    for (String item : firstList) {
        if (secondList.contains(item)) {
            resultList.add(item);
        }
    }
    System.out.println(resultList);
}

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

要是两个集合中存在重复元素,这样得到的结果是没有去重的,如果是:
Java判断两个集合是否具有交集以及如何获得交集

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

如果要去重可以加上
Java判断两个集合是否具有交集以及如何获得交集

最终的代码:

public static void main(String[] args) {
    List<String> firstList = Arrays.asList("teacher", "worker", "student", "driver", "driver");
    List<String> secondList = Arrays.asList("user", "admin", "student", "driver", "driver");

    List<String> resultList = new ArrayList<>();
    for (String item : firstList) {
        if (secondList.contains(item) && !resultList.contains(item)) {
            resultList.add(item);
        }
    }
    System.out.println(resultList);
}

这样得到的结果就是去重的了
Java判断两个集合是否具有交集以及如何获得交集

也可以使用HashSet去重
Java判断两个集合是否具有交集以及如何获得交集

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

2、使用Java8的forEach

比如:

public static void main(String[] args) {
    List<String> firstList = Arrays.asList("teacher", "worker", "student", "driver");
    List<String> secondList = Arrays.asList("user", "admin", "student", "driver");

    List<String> 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判断两个集合是否具有交集以及如何获得交集

假如两个集合有相同的元素
Java判断两个集合是否具有交集以及如何获得交集

和“二.1”一样,这样也是不能去重的
Java判断两个集合是否具有交集以及如何获得交集

做法也是和上面那样
Java判断两个集合是否具有交集以及如何获得交集

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

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

3、使用Java8的新特性

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

代码如下:

public static void main(String[] args) {
    List<String> firstList = Arrays.asList("teacher", "worker", "student");
    List<String> secondList = Arrays.asList("user", "admin", "student");

    //方式一
    List<String> resultList = firstList.stream().filter((firstItem) -> secondList.contains(firstItem)).collect(Collectors.toList());

    //方式二
    //List<String> resultList = firstList.stream().filter(secondList::contains).collect(Collectors.toList());
    System.out.println(resultList);
}

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

和“二.1”、“二.2”那样也是不能去除重复元素的
Java判断两个集合是否具有交集以及如何获得交集

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

加上distinct就可以去重了
Java判断两个集合是否具有交集以及如何获得交集
结果:
Java判断两个集合是否具有交集以及如何获得交集文章来源地址https://www.toymoban.com/news/detail-462652.html

到了这里,关于Java判断两个集合是否具有交集以及如何获得交集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Java使用不同方式获取两个集合List的交集、补集、并集(相加)、差集(相减)

    Java使用不同方式获取两个集合List的交集、补集、并集(相加)、差集(相减)

    首先知道几个单词的意思: 并集 = union 交集 = intersection 补集 = complement 析取 = disjunction 减去 = subtract 对于两个给定集合A、B,由两个集合所有元素构成的集合,叫做A和B的并集。 记作:AUB 读作“A并B” 例:{3,5}U{2,3,4,6}= {2,3,4,5,6} 对于两个给定集合A、B,由属于A又属于B的所有元

    2024年01月22日
    浏览(47)
  • java 判断两个List是否包含 判断两个list相等

    java 判断两个List是否包含 判断两个list相等 https://blog.51cto.com/u_12855/7333853 1、直接使用equals()比较 众所周知,两个列表具有完全相同的元素并且具有完全相同的顺序时,它们是相等的。因此, 如果我们业务要求两个list顺序一致,可以使用equals()方法进行相等性检查: 即使

    2024年02月04日
    浏览(54)
  • 前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?

    前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?

    一、如何判断对象具有某属性? 如: let obj={name:\\\'zhangsan\\\',age:21} 有以下方法 ( property 为属性名的变量,实际上是key,键名): 1. property in obj 效果如图: in 运算符 2. Reflect.has(obj, property) 效果如图: 关于 Reflect: ① 它是JS的一个内置对象,无构造函数,可以用它遍历对象的key,如

    2023年04月08日
    浏览(51)
  • Js如何判断两个数组是否相等?

    Js如何判断两个数组是否相等?

    日常开发,时不时会遇到需要判定2个数组是否相等的情况,需要实现考虑的场景有: 先判断长度,长度不等必然不等 元素位置 其他情况考虑 \\\'1\\\' 和 1 (Object的key是字符串, Map的key没有限制) NaN null 和 undefined 数组自带的方法,比较适合的有: every、some、filter、findIndex 。 这种

    2024年02月22日
    浏览(47)
  • 如何判断两个随机变量是否独立,同分布

    如何判断两个随机变量是否独立,同分布

    独立两个判断条件 1,设(x,y)的密度函数为f(x,y),其定义域是矩形区域。联合密度函数的区域必须为矩形区域,这很重要。可以证明一波,若x的范围为(0,1),y的范围为(3,5)如果他们相互独立,那么组成的联合密度函数,每一个x,都可以对应所有的y,所以组成的范围为矩

    2024年02月11日
    浏览(47)
  • Go语言如何判断两个对象是否相等

    在编程中,判断两个对象是否相等是一项常见的任务,同时判断对象是否相等在很多情况下都非常重要,例如: 单元测试 :编写单元测试时,经常需要验证函数的输出是否符合预期,这涉及到比较对象是否相等。 数据结构操作 :在使用 map 等数据结构时,可能需要判断两个对

    2024年02月07日
    浏览(328)
  • 记录--如何判断两个数组的内容是否相等

    记录--如何判断两个数组的内容是否相等

    给定两个数组,判断两数组内容是否相等。 不使用排序 不考虑元素位置 例: 思考几秒:有了😀😀 直接遍历第一个数组,并判断是否存在于在第二个数组中 求差集, 如果差集数组有长度,也说明两数组不等(个人感觉比上面的麻烦就不举例了) 细心的小伙伴就会发现:N

    2024年02月08日
    浏览(416)
  • laravel 两个集合取交集、并集、差集

    交集: 使用intersect()函数,用于获取两个集合的交集: 并集:使用union()函数,用于获取两个集合的并集: 差集:使用diff()函数,用于获取两个集合的差集:

    2024年02月12日
    浏览(28)
  • 在JS中如何判断两个对象是否相等

    在JavaScript中,判断两个对象是否相等有多种方法,取决于你对 相等 的定义以及对象属性的类型。以下是几种常见的方法:   1. 严格相等运算符 (===) 使用 === 运算符可以比较两个对象是否引用同一个对象。如果两个变量引用了同一个对象,则它们是相等的,否则它们是不相等

    2024年02月03日
    浏览(44)
  • 【Java SE】判断两个文件内容是否相同的多种方法

    逐字节比较文件内容。这种方法适用于小文件,但对于大文件会比较耗时。 计算文件的哈希值(如 MD5、SHA-256 等),然后比较两个文件的哈希值。如果哈希值相同,则可以认为文件内容相同。这种方法适用于大文件,因为只需要比较哈希值而不是整个文件内容。 通过使用

    2024年02月07日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包