将一个数组中重复的元素去除,并且返回一个新数组

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;
		
	}

你可能感兴趣的:(Java合集,java,eclipse)