public static void main(String[] args) {
// 声明一个数组
int[] arr = {1, 7, 7, 4, 5, 1, 1, 3, 3, 6, 9};
// 打印一下去重前的数组
System.out.println("数组去重前:" + Arrays.toString(arr));
int[] newArr = deleteRepeat(arr);
System.out.println("数组去重后:" + Arrays.toString(newArr));
}
public static int[] deleteRepeat(int[] arr) {
int[] Arr = new int[arr.length];
// 先对原数组进行排序
Arrays.sort(arr);
// 为新数组声明一个索引
int a = 0;
for (int i = 0; i < arr.length; i++) {
// 声明一个boolean类型的标记,每次都要进行重置
boolean xiabiao = true;
// 嵌套内层循环将原数组元素逐个比较,每次比较都是前一个元素与后一个元素的比较(i :i+1)
for (int j = i + 1; j < arr.length; j++) {
// 判断元素值是否重复,若重复判断为false,则跳出当前层循环,不保存重复的元素值
if (arr[i] == arr[j]) {
xiabiao = false;
break;
}
}
// 判断的结果,若xiabiao = true成立,将原数组元素赋给新数组,并且赋值完成之后下标自增
if (xiabiao) {
Arr[a] = arr[i];
a ++;
}
}
// 再次定义一个新数组,使用Arrays.copyOfRange的方法拷贝去重之后的数组
// (这一步的意义是因为,如果直接传回去重后的数组得到的值是[1, 3, 4, 5, 6, 7, 9, 0, 0, 0, 0] 有0 就很难看,重新拷贝之后将多余的默认值删去)
int[] newarrs = Arrays.copyOfRange(Arr, 0, a);
// System.out.println(Arrays.toString(newarrs));
// 返回数组
return newarrs;
}
将一个数组中重复的元素去除,并且返回一个新数组
最新推荐文章于 2024-07-27 13:31:57 发布