java 数组排重

方法一:根据元素下标删除重复元素
/*
* 定义一个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)); } }

 

posted @ 2017-02-26 10:18  Focousss  阅读(1693)  评论(0编辑  收藏  举报