java 如何判断两个List<String>集合是否存在交集

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

方法一:使用 retainAll 方法

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

java 复制代码
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);

方法二:使用 StreamanyMatch

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

java 复制代码
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 会更高效。

java 复制代码
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 避免了线性查找,适合大规模数据集合。
相关推荐
鼠鼠我捏,要死了捏23 分钟前
深入解析Java NIO多路复用原理与性能优化实践指南
java·性能优化·nio
ningqw25 分钟前
SpringBoot 常用跨域处理方案
java·后端·springboot
superlls37 分钟前
(Redis)主从哨兵模式与集群模式
java·开发语言·redis
叫我阿柒啊2 小时前
Java全栈工程师面试实战:从基础到微服务的深度解析
java·redis·微服务·node.js·vue3·全栈开发·电商平台
hqxstudying4 小时前
mybatis过渡到mybatis-plus过程中需要注意的地方
java·tomcat·mybatis
lichkingyang4 小时前
最近遇到的几个JVM问题
java·jvm·算法
ZeroKoop4 小时前
多线程文件下载 - 数组切分,截取文件名称
java
Monly214 小时前
IDEA:控制台中文乱码
java·ide·intellij-idea
叫我阿柒啊4 小时前
从全栈开发到微服务架构:一次真实的Java面试实录
java·redis·ci/cd·微服务·vue3·springboot·jwt
superlls5 小时前
(计算机网络)JWT三部分及 Signature 作用
java·开发语言·计算机网络