◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
java 数组去重方法:使用 set:创建 set 去除重复元素,转换为新数组。使用 sort 和二分查找:排序数组,查找每个元素出现位置,去除重复元素。使用 hashmap:以元素为键,出现次数为值,去除出现次数大于 1 的元素。
Java 数组去重
在 Java 中,数组去重是指从数组中移除重复元素,仅保留唯一元素。以下几种方法可以实现数组去重:
1. 使用 Set
Set 是一种集合,它不会保留重复元素。我们可以将数组元素转换为 Set,然后将其转换为一个新数组。
立即学习“Java免费学习笔记(深入)”;
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; } }
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。