方法一:根据元素下标删除重复元素
/*
* 定义一个int数组,大小为10,随机数【1,10】给元素赋值
* 对数组进行排重
*/
public class Demo {
public static void main(String[] args) {
//定义一个长度为10的数组并赋值
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random()*10+1);
}
System.out.println(Arrays.toString(arr));
//遍历数组,将数组当前元素与后面的元素进行比较,相等则删除
for (int i = 0; i < arr.length; i++) {
for(int j = i+1;j < arr.length;j++){
//根据重复元素的下标来删除元素
if(arr[i] == arr[j]){
//定义一个删除元素后的缓存数组
int[] nArr = new int[arr.length-1];
for(int k =0;k < arr.length;k++)
if(k < j){
nArr[k] = arr[k];
}else if(k > j){
nArr[k-1] = arr[k];
}
//这里有一个坑,缓存数组赋值给原数组后,因下标+1可能会导致排重遗漏
arr = nArr;
j--;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
//方法二:该方法是根据删除具体重复元素来实现
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 10 + 1);
}
int[] nArr = new int[arr.length];
//定义一个下标
int index = 0;
while(true){
//获取到arr第一个元素
int num = arr[0];
//将num添加数组nArr
nArr[index] = num;
index++;
int count = 0;
//统计num在数组arr中的个数
for (int i = 0; i < arr.length; i++) {
//判断
if(arr[i] == num){
count++;
}
}
//定义一个数组,大小为arr.length - count
int[] dltArr = new int[arr.length - count];
int idx = 0;
for(int i = 0; i < arr.length; i++){
//判断
if(arr[i] != num){
dltArr[idx] = arr[i];
idx++;
}
}
arr = dltArr;
//退出循环的判断
if(arr.length == 0){
break;
}
}
//定义一个数组,大小为index
int[] ARR = new int[index];
for (int i = 0; i < index; i++) {
ARR[i] = nArr[i];
}
System.out.println(Arrays.toString(ARR));
}
}