判断两个集合是否存在相同元素的方法

在实际的开发中,经常会遇到需要判断两个集合是否存在相同元素的情况。这时候,我们可以利用Java中的一些方法来实现这个功能。本文将介绍如何用Java判断两个集合存在相同元素的方法,并给出相应的代码示例。

方法一:利用Collection的retainAll方法

Java中的Collection接口提供了一个retainAll方法,可以用来判断两个集合是否存在相同元素。该方法会保留两个集合中共有的元素,如果两个集合中有相同元素,retainAll方法的返回结果不为空。示例代码如下:

import java.util.*;

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);

        list1.retainAll(list2);

        if (!list1.isEmpty()) {
            System.out.println("集合中存在相同元素");
        } else {
            System.out.println("集合中不存在相同元素");
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.

在上面的代码中,我们新建了两个List集合list1和list2,分别添加了一些元素。然后使用retainAll方法对list1进行操作,保留了list1和list2中共有的元素。最后判断list1是否为空,如果不为空,则说明集合中存在相同元素。

方法二:利用HashSet来判断

除了使用Collection的retainAll方法外,我们还可以利用HashSet来判断两个集合是否存在相同元素。HashSet是一种不允许重复元素的集合,利用这个特性可以很方便地判断两个集合是否存在相同元素。示例代码如下:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Set<Integer> set1 = new HashSet<>();
        set1.add(1);
        set1.add(2);
        set1.add(3);

        Set<Integer> set2 = new HashSet<>();
        set2.add(3);
        set2.add(4);
        set2.add(5);

        Set<Integer> intersection = new HashSet<>(set1);
        intersection.retainAll(set2);

        if (!intersection.isEmpty()) {
            System.out.println("集合中存在相同元素");
        } else {
            System.out.println("集合中不存在相同元素");
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

在上面的代码中,我们新建了两个HashSet集合set1和set2,分别添加了一些元素。然后新建一个intersection集合,将set1中的元素添加到intersection中,再使用retainAll方法与set2求交集。最后判断intersection是否为空,如果不为空,则说明集合中存在相同元素。

方法三:利用流的distinct和count方法

Java 8引入了Stream API,可以方便地对集合进行各种操作。我们可以利用Stream的distinct方法和count方法来判断两个集合是否存在相同元素。示例代码如下:

import java.util.*;

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);

        long count = list1.stream().distinct().filter(list2::contains).count();

        if (count > 0) {
            System.out.println("集合中存在相同元素");
        } else {
            System.out.println("集合中不存在相同元素");
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.

在上面的代码中,我们利用Stream的distinct方法对list1去重,再利用filter方法和count方法判断list2中是否包含list1中的元素。最后根据count的值判断集合中是否存在相同元素。

总结

本文介绍了三种判断两个集合是否存在相同元素的方法,分别是利用Collection的retainAll方法、利用HashSet以及利用Stream API。这些方法在实际开发中都有各自的应用场景,可以根据具体情况选择适合的方法