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实现数组去重函数的方法。具体选用哪种方法取决于实际需求。
