欢迎访问宙启技术站
智能推送

Java函数实现数组元素去重方法

发布时间:2023-10-03 01:51:48

在Java中,可以使用多种方法实现数组元素去重。下面将介绍几种常见的实现方式。

方法一:使用HashSet

HashSet是Java中的一个集合类,它可以存储不重复的元素。我们可以利用HashSet的特性,将数组元素逐个添加到HashSet中,并通过HashSet的toArray()方法获取去重后的数组。

import java.util.HashSet;

public class ArrayDuplicateRemoval {
    public static int[] removeDuplicates(int[] arr) {
        HashSet<Integer> set = new HashSet<>();
        for (int i = 0; i < arr.length; i++) {
            set.add(arr[i]);
        }
        int[] result = new int[set.size()];
        int index = 0;
        for (int num : set) {
            result[index++] = num;
        }
        return result;
    }

    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 2, 3, 5};
        int[] result = removeDuplicates(arr);
        for (int num : result) {
            System.out.print(num + " ");
        }
    }
}

方法二:使用LinkedHashSet

LinkedHashSet是HashSet的一个子类,它可以保持插入顺序。我们可以利用LinkedHashSet的特性,先将数组元素逐个添加到LinkedHashSet中,再通过LinkedHashSet的toArray()方法获取去重后的数组。

import java.util.LinkedHashSet;

public class ArrayDuplicateRemoval {
    public static int[] removeDuplicates(int[] arr) {
        LinkedHashSet<Integer> set = new LinkedHashSet<>();
        for (int i = 0; i < arr.length; i++) {
            set.add(arr[i]);
        }
        int[] result = new int[set.size()];
        int index = 0;
        for (int num : set) {
            result[index++] = num;
        }
        return result;
    }

    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 2, 3, 5};
        int[] result = removeDuplicates(arr);
        for (int num : result) {
            System.out.print(num + " ");
        }
    }
}

方法三:使用循环遍历

我们可以使用两个循环嵌套来完成去重操作。外层循环遍历数组的每个元素,内层循环判断该元素是否在之前的元素中出现过,若出现过则移动后面的元素向前一个位置,直到遍历完整个数组。

public class ArrayDuplicateRemoval {
    public static int[] removeDuplicates(int[] arr) {
        int len = arr.length;
        for (int i = 0; i < len; i++) {
            for (int j = i + 1; j < len; j++) {
                if (arr[i] == arr[j]) {
                    for (int k = j; k < len - 1; k++) {
                        arr[k] = arr[k + 1];
                    }
                    len--;
                    j--;
                }
            }
        }
        int[] result = new int[len];
        System.arraycopy(arr, 0, result, 0, len);
        return result;
    }

    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 2, 3, 5};
        int[] result = removeDuplicates(arr);
        for (int num : result) {
            System.out.print(num + " ");
        }
    }
}

方法四:使用Stream API

Java 8引入了Stream API,我们可以利用Stream的distinct()方法来去重数组元素。

import java.util.Arrays;

public class ArrayDuplicateRemoval {
    public static int[] removeDuplicates(int[] arr) {
        return Arrays.stream(arr).distinct().toArray();
    }

    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 2, 3, 5};
        int[] result = removeDuplicates(arr);
        for (int num : result) {
            System.out.print(num + " ");
        }
    }
}

以上是四种常见的方法实现数组元素去重。根据实际需求和数据规模,可以选择合适的方法进行处理。