java怎么数组去重

java 数组去重方法:使用 set:创建 set 去除重复元素,转换为新数组。使用 sort 和二分查找:排序数组,查找每个元素出现位置,去除重复元素。使用 hashmap:以元素为键,出现次数为值,去除出现次数大于 1 的元素。

java怎么数组去重

Java 数组去重

Java 中,数组去重是指从数组中移除重复元素,仅保留唯一元素。以下几种方法可以实现数组去重:

1. 使用 Set

Set 是一种集合,它不会保留重复元素。我们可以将数组元素转换为 Set,然后将其转换为一个新数组。

int[] arr = {1, 2, 3, 4, 5, 1, 2, 3};

// 创建一个 Set
Set<Integer> set = new HashSet<>(Arrays.asList(arr));

// 将 Set 转换为数组
int[] result = set.stream().mapToInt(Integer::intValue).toArray();

2. 使用 Sort 和二分查找

我们可以先对数组进行排序,然后使用二分查找查找每个元素的第一个和最后一个出现位置。重复元素的位置差将大于 1,因此可以根据此差值过滤重复元素。

Arrays.sort(arr);

int[] result = new int[arr.length];
int index = 0;

for (int i = 0; i < arr.length; i++) {
    int first = binarySearch(arr, i, arr.length - 1, arr[i]);
    int last = binarySearch(arr, i, arr.length - 1, arr[i], true);
    
    if (last - first <= 1) {
        result[index++] = arr[i];
    }
    
    i = last;
}

3. 使用 HashMap

HashMap 是一种键值对集合,我们可以将每个数组元素作为键,其出现次数作为值。然后,我们可以遍历 HashMap,只保留出现次数为 1 的元素。

HashMap<Integer, Integer> map = new HashMap<>();

for (int num : arr) {
    map.put(num, map.getOrDefault(num, 0) + 1);
}

int[] result = new int[map.size()];
int index = 0;

for (Integer key : map.keySet()) {
    if (map.get(key) == 1) {
        result[index++] = key;
    }
}

以上就是java怎么数组去重的详细内容,更多请关注硕下网其它相关文章!