📜  Java程序计算两组的交集(1)

📅  最后修改于: 2023-12-03 15:02:06.564000             🧑  作者: Mango

Java程序计算两组的交集

本文将介绍如何使用 Java 编写程序计算两组的交集。我们将分别介绍两种不同的实现方式。

方式一:使用 Set

可以使用 Java 中的 Set 数据结构来存储集合元素,并使用 Set 的 retainAll() 方法计算两个 Set 的交集。下面是具体代码实现:

import java.util.HashSet;
import java.util.Set;
 
public class IntersectionSet {
    public static void main(String[] args) {
        Set<Integer> set1 = new HashSet<Integer>();
        Set<Integer> set2 = new HashSet<Integer>();
 
        // 添加元素到 Set
        set1.add(1);
        set1.add(2);
        set1.add(3);
        set1.add(4);
 
        set2.add(3);
        set2.add(4);
        set2.add(5);
        set2.add(6);
 
        // 计算两个 Set 的交集
        set1.retainAll(set2);
 
        // 打印交集结果
        System.out.println(set1);
    }
}

以上代码将输出 [3, 4],表示两个 Set 的交集为元素 3 和 4。

方式二:使用数组

可以使用 Java 中的数组存储集合元素,并逐个元素对比计算两个数组的交集。下面是具体代码实现:

import java.util.Arrays;
 
public class IntersectionArray {
    public static void main(String[] args) {
        Integer[] arr1 = {1, 2, 3, 4};
        Integer[] arr2 = {3, 4, 5, 6};
 
        // 计算两个数组的交集
        Integer[] intersection = getIntersection(arr1, arr2);
 
        // 打印交集结果
        System.out.println(Arrays.toString(intersection));
    }
 
    public static Integer[] getIntersection(Integer[] arr1, Integer[] arr2) {
        Set<Integer> set = new HashSet<Integer>(Arrays.asList(arr1));
        List<Integer> list = new ArrayList<Integer>();
 
        for (Integer i : arr2) {
            if (set.contains(i)) {
                list.add(i);
            }
        }
 
        Integer[] intersection = new Integer[list.size()];
        intersection = list.toArray(intersection);
 
        return intersection;
    }
}

以上代码将输出 [3, 4],表示两个数组的交集为元素 3 和 4。

总结

使用 Set 和数组都可以实现计算两组的交集。使用 Set 更为方便,尤其是当集合元素数量较大时。使用数组需要逐个元素对比,但数组通常可以更好地控制元素的顺序等特性。根据实际需求选择不同的实现方式即可。