给你一个数组怎么去重
假设不用工具类,直接使用循环去重:
用到的思想是选择排序
public static int[] removeDuplication(int [] arrayA){
for (int i = 0; i < arrayA.length-1; i++) {
for (int j = i+1; j < arrayA.length; j++) {
if (arrayA[i] == arrayA[j]){
arrayA = remove(arrayA,j);
//去掉重复元素后,后面的元素下标会前移,造成紧邻的元素没有被比较
j--;
}
}
}
return arrayA;
}
public static int[] remove(int[] arrA,int i){
int[] arrB = new int[arrA.length-1];
if(i < 0 || i > arrA.length){
System.out.println("数组下标越界.");
}else{
for (int j = i; j < arrA.length-1; j++) {
arrA[j]=arrA[j+1];
}
for (int j = 0; j < arrB.length; j++) {
arrB[j] = arrA[j];
}
}
return arrB;
}
还有一种,因为set集合直接就是不重复的集合,我们可以遍历数组中的元素,存入set集合中,再将set集合转换为数组
public static Object[] removeWithSet(int[] arr){
Set<Integer> set = new HashSet<>();
for (int i = 0; i < arr.length; i++) {
set.add(arr[i]);
}
return set.toArray();
}