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 避免了线性查找,适合大规模数据集合。
相关推荐
西岭千秋雪_2 小时前
Zookeeper实现分布式锁
java·分布式·后端·zookeeper·wpf
MarcoPage3 小时前
Python 字典推导式入门:一行构建键值对映射
java·linux·python
脸大是真的好~3 小时前
黑马JAVAWeb-11 请求参数为数组-XML自动封装-XML手动封装-增删改查-全局异常处理-单独异常分别处理
java
Hello.Reader5 小时前
Data Sink定义、参数与可落地示例
java·前端·网络
2401_837088506 小时前
stringRedisTemplate.opsForHash().entries
java·redis
大师兄66686 小时前
鸿蒙 ArkTS 入门教程:小白实战 List 列表开发(详解 @State, ForEach, @Builder)
list·harmonyos·arkts·builder·foreach·state·鸿蒙入门
lkbhua莱克瓦248 小时前
Java基础——集合进阶3
java·开发语言·笔记
蓝-萧8 小时前
使用Docker构建Node.js应用的详细指南
java·后端
多喝开水少熬夜8 小时前
Trie树相关算法题java实现
java·开发语言·算法
lkbhua莱克瓦249 小时前
Java基础——集合进阶用到的数据结构知识点1
java·数据结构·笔记·github