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

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

发布时间:2023-06-26 10:58:51

在Java中,实现数组去重的方法有很多种。以下将详细介绍几种实现方式。

1.使用Set去重

Set是Java中的一个接口,它是一个无序的集合,不允许有重复的元素。我们可以把数组中的元素全部加入到Set中,在添加新元素时,如果元素已经出现过,Set便会自动去重。最后,我们再把Set中的元素转化为数组即可。

Java代码示例:

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

2.使用排序去重

对于一个数组,我们可以对其进行升序或降序排列。排序后,相同的元素就可以排列在一起,方便去重。我们可以通过双指针的方式来遍历数组,如果有重复的元素,我们便可以通过将后面的指针向后移动一位,来跳过这个元素。

Java代码示例:

public static int[] removeDuplicates(int[] nums) {
    if (nums.length == 0) {
        return new int[0];
    }
    Arrays.sort(nums);
    int j = 0;
    for (int i = 1; i < nums.length; i++) {
        if (nums[i] != nums[j]) {
            nums[++j] = nums[i];
        }
    }
    int[] result = new int[j + 1];
    for (int i = 0; i <= j; i++) {
        result[i] = nums[i];
    }
    return result;
}

3.使用Map去重

Map是Java中的一个接口,它是一个由键值对构成的集合。我们可以把数组中的元素作为键,值全部赋值为1,将所有元素添加到Map中。当出现重复元素时,我们可以更新相应的值为2,代表这个元素已经出现过。最后,我们再遍历Map中的键,将所有值为1的元素放到结果数组中即可。

Java代码示例:

public static int[] removeDuplicates(int[] nums) {
    Map<Integer, Integer> map = new HashMap<>();
    for (int num : nums) {
        map.put(num, map.getOrDefault(num, 0) + 1);
    }
    int[] result = new int[map.size()];
    int i = 0;
    for (int num : map.keySet()) {
        if (map.get(num) == 1) {
            result[i++] = num;
        }
    }
    int[] res = Arrays.copyOf(result, i);
    return res;
}

总结

以上就是Java实现数组去重的三种方法。使用Set、排序、Map的方法,各有优缺点,选择哪种方法要根据具体情况而定。需要注意的是,如果需要保持数组的原有顺序,可以考虑使用LinkedHashSet来去重,它会保留元素插入的顺序。