📜  数组删除java中的重复项(1)

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

数组删除Java中的重复项

在Java中,如果数组中存在重复的元素,可能会影响程序的正确性和效率。因此,我们需要删除数组中的重复项。下面介绍几种实现方法。

方法一:使用集合类HashSet

将数组中的元素放入HashSet中,由于HashSet不允许重复元素,重复的元素将被自动去重。然后将去重后的元素放回原数组中。代码如下所示:

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

方法二:使用双重循环

使用两个循环遍历数组,对比每个元素是否与后面的元素重复,如果重复,则删除后面的元素。需要注意的是,删除元素时需要将数组末尾的元素放到删除元素的位置,然后将数组长度减一。代码如下所示:

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

方法三:使用Java 8流

使用Java 8的流操作,先将数组转换成IntStream,去重后再将其转换回数组。代码如下所示:

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

以上是三种常用的数组去重方法,可以根据实际需求选择适合的方法。