1.使用 retainAll() 方法:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(3);
list2.add(4);
list2.add(5);
List<Integer> intersection = new ArrayList<>(list1);
intersection.retainAll(list2);
if (!intersection.isEmpty()) {
System.out.println("两个 List 集合有交集"+intersection);
} else {
System.out.println("两个 List 集合没有交集");
}
}
}
以上代码中,我们创建了两个 List 集合 list1 和 list2,然后使用 retainAll() 方法将 list1 中与 list2 不相同的元素移除,最后判断交集 intersection 是否为空来判断两个 List 集合是否有交集。
2.使用 Java 8 的 Stream API:
import java.util.ArrayList;
import java.util.List;
public class Main2 {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(3);
list2.add(4);
list2.add(5);
boolean hasIntersection = list1.stream().anyMatch(list2::contains);
if (hasIntersection) {
System.out.println("两个 List 集合有交集");
} else {
System.out.println("两个 List 集合没有交集");
}
}
}
以上代码中,我们使用 Java 8 的 Stream API,通过 anyMatch() 方法判断 list1 中是否存在任意一个元素在 list2 中,如果存在则说明两个 List 集合有交集。
3.使用 Java 8 的 Stream API:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main3 {
public static void main(String[] args) {
List<Integer> listA = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> listB = Arrays.asList(3, 4, 5, 6, 7);
List<Integer> intersection = listA.stream()
.filter(listB::contains)
.collect(Collectors.toList());
System.out.println("Intersection: " + intersection);
}
}
如果你的集合中的元素较为复杂,你也可以根据需要重写equals方法或者使用其他方式进行比较。