java判断两个List<String>集合是否存在交集三种方法

 更新时间:2025年03月19日 10:11:48   作者:单线程bug  
这篇文章主要介绍了三种判断Java中两个List集合是否存在交集的方法,分别是使用retainAll方法、使用Stream和anyMatch以及使用Set提高性能,每种方法都有其适用场景和优缺点,需要的朋友可以参考下

在 Java 中判断两个 List<String> 集合是否存在交集,可以使用以下几种方法:

方法一:使用 retainAll 方法

retainAll 方法保留集合中与另一个集合相同的元素,如果集合发生变化,则表示存在交集。

List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("c", "d", "e");

List<String> temp = new ArrayList<>(list1);
boolean hasIntersection = temp.retainAll(list2);  // 返回 true 表示存在交集

System.out.println("是否存在交集:" + hasIntersection);

方法二:使用 Stream 和 anyMatch

使用 Java 8 的流操作更简洁。

List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("c", "d", "e");

boolean hasIntersection = list1.stream().anyMatch(list2::contains);
System.out.println("是否存在交集:" + hasIntersection);

方法三:使用 Set 提高性能

如果集合较大,使用 Set 会更高效。

List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("c", "d", "e");

Set<String> set = new HashSet<>(list1);
boolean hasIntersection = list2.stream().anyMatch(set::contains);

System.out.println("是否存在交集:" + hasIntersection);

选择依据

  • retainAll 方法 简单直接,但会修改原集合。
  • Stream 是函数式编程风格,代码更简洁。
  • 使用 Set 避免了线性查找,适合大规模数据集合。

总结 

到此这篇关于java判断两个List<String>集合是否存在交集三种方法的文章就介绍到这了,更多相关java判断List<String>集合交集内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java 多线程实例讲解(一)

    Java 多线程实例讲解(一)

    本文主要介绍Java 多线程的知识,这里整理了详细的资料及简单示例代码有需要的小伙伴可以参考下
    2016-09-09
  • java数据结构与算法之noDups去除重复项算法示例

    java数据结构与算法之noDups去除重复项算法示例

    这篇文章主要介绍了java数据结构与算法之noDups去除重复项算法实现技巧,程序代码非常简单,关键在于循环与判定,需要的朋友可以参考下
    2016-08-08
  • 23种设计模式(17)java命令模式

    23种设计模式(17)java命令模式

    这篇文章主要为大家详细介绍了23种设计模式之java命令模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • SpringBoot MainApplication类文件的位置详解

    SpringBoot MainApplication类文件的位置详解

    这篇文章主要介绍了SpringBoot MainApplication类文件的位置详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java全面细致讲解类与对象

    Java全面细致讲解类与对象

    类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型;变量就是可以变化的量,存储在内存中—个可以拥有在某个范围内的可变存储区域
    2022-05-05
  • Java 多用户登录限制的实现方法

    Java 多用户登录限制的实现方法

    最近没有事情做,闲的发呆,于是写个东东练练手。这篇文章主要介绍了Java 多用户登录限制的实现方法的相关资料,需要的朋友可以参考下
    2016-11-11
  • Spring Kafka中@KafkaListener注解的参数与使用小结

    Spring Kafka中@KafkaListener注解的参数与使用小结

    @KafkaListener注解为开发者提供了一种声明式的方式来定义消息监听器,本文主要介绍了Spring Kafka中@KafkaListener注解的参数与使用小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Java 8中字符串拼接新姿势StringJoiner详解

    Java 8中字符串拼接新姿势StringJoiner详解

    在本篇文章里小编给大家整理了关于Java 8中字符串拼接新姿势StringJoiner的详解内容,需要的朋友们参考下。
    2019-09-09
  • java基础--JDK SPI概述

    java基础--JDK SPI概述

    SPI是一种服务发现机制,本文就SPI做了详细概述,具有很好的参考价值,希望对小伙伴们有所帮助,感兴趣的朋友一起来参考参考吧
    2021-08-08
  • Lombok注解之@SuperBuilder--解决无法builder父类属性问题

    Lombok注解之@SuperBuilder--解决无法builder父类属性问题

    这篇文章主要介绍了Lombok注解之@SuperBuilder--解决无法builder父类属性问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论