在 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);
方法二:使用 Stream
和 anyMatch
使用 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
避免了线性查找,适合大规模数据集合。