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实现的微信公众号获取微信用户信息,结合实例形式分析了Java微信公众号获取微信用户信息相关原理、步骤与操作注意事项,需要的朋友可以参考下
    2019-10-10
  • SpringCloud Feign配置应用详细介绍

    SpringCloud Feign配置应用详细介绍

    这篇文章主要介绍了SpringCloud Feign配置应用,feign是netflix提供的服务间基于http的rpc调用框架,在spring cloud得到广泛应用
    2022-09-09
  • SpringBoot定时任务的实现详解

    SpringBoot定时任务的实现详解

    这篇文章主要介绍了SpringBoot定时任务的实现详解,定时任务是企业级开发中最常见的功能之一,如定时统计订单数、数据库备份、定时发送短信和邮件、定时统计博客访客等,简单的定时任务可以直接通过Spring中的@Scheduled注解来实现,需要的朋友可以参考下
    2024-01-01
  • 解读SpringBoot中addCorsMappings配置跨域与拦截器互斥问题的原因

    解读SpringBoot中addCorsMappings配置跨域与拦截器互斥问题的原因

    这篇文章主要介绍了解读SpringBoot中addCorsMappings配置跨域与拦截器互斥问题的原因,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 浅谈SpringBoot2.4 配置文件加载机制大变化

    浅谈SpringBoot2.4 配置文件加载机制大变化

    这篇文章主要介绍了浅谈SpringBoot2.4 配置文件加载机制大变化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • java方法重载和参数类型自动提升方式

    java方法重载和参数类型自动提升方式

    这篇文章主要介绍了java方法重载和参数类型自动提升方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 基于Springboot疫苗接种行程管理系统的设计与实现

    基于Springboot疫苗接种行程管理系统的设计与实现

    本文主要介绍了基于Springboot实现的疫苗接种行程管理系统的示例代码,系统主要实现个人疫苗接种管理、行程管理、病史管理、风险地区管理、核酸检测报告结果上报、疫情新闻管理等功能,需要的可以参考一下
    2022-03-03
  • java项目导出为.exe执行文件的方法步骤

    java项目导出为.exe执行文件的方法步骤

    最近做了个项目,想要转换成可执行文件,那么java项目如何导出为.exe执行文件,本文就介绍一下,主要使用jar2exe软件,感兴趣的可以了解一下
    2021-05-05
  • 配置java.library.path加载库文件问题

    配置java.library.path加载库文件问题

    这篇文章主要介绍了配置java.library.path加载库文件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Spring mvc Json处理实现流程代码实例

    Spring mvc Json处理实现流程代码实例

    这篇文章主要介绍了Spring mvc Json处理实现流程代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论