java判断两个List<String>集合是否存在交集三种方法
作者:单线程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>集合交集内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!