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

Java中如何实现数组去重函数

发布时间:2023-06-14 02:56:23

数组去重是指从一个数组中删除所有重复的元素,使得每个元素都只出现一次。在Java中实现数组去重函数有多种方式,以下列举几种常见的方法。

1、使用Set集合去重

Set是Java中的一个集合接口,它可以用来存储一组不重复的元素。我们可以先将数组中的元素转化为Set集合,然后再将其转化为数组返回。示例代码如下:

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

2、使用两层循环去重

这种方法也比较简单,就是通过两层循环来比较数组中的每个元素是否重复,如果重复了就将其删除。但是这种方法的时间复杂度为O(n^2),当数组较大时效率会比较低。示例代码如下:

public static int[] distinct(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]) {
                arr[j] = arr[len - 1];
                len--;
                j--;
            }
        }
    }
    int[] result = new int[len];
    System.arraycopy(arr, 0, result, 0, len);
    return result;
}

3、使用Arrays工具类排序去重

这种方法先将数组排序,然后将相邻的重复元素删除。由于数组已经排序了,所以只需要比较相邻的元素即可。这种方法时间复杂度较低,为O(nlogn)。示例代码如下:

public static int[] distinct(int[] arr) {
    Arrays.sort(arr);
    int len = arr.length;
    int j = 0;
    for (int i = 0; i < len - 1; i++) {
        if (arr[i] != arr[i + 1]) {
            arr[j++] = arr[i];
        }
    }
    arr[j++] = arr[len - 1];
    int[] result = new int[j];
    System.arraycopy(arr, 0, result, 0, j);
    return result;
}

4、使用Java 8流式编程去重

Java 8新引入的流式编程可以大大简化代码,去重也可以使用流式编程来实现。示例代码如下:

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

以上就是几种常见的Java实现数组去重函数的方法。具体选用哪种方法取决于实际需求。