去除数组中的重复元素-JAVA

要求:去除二维数组中的重复元素

思路:试试不用集合的方式去重复元素,首先我想到的是需要一个去重后存储元素的新数组,然后在两层嵌套循环,外层遍历原数组,内层逐一判断是否和后面的元素重合,然后在存入新数组。(这时候会出现一个问题,请往下看!)

// 1、去除数组中重复的元素
	public static void test(int[] arr) {
		// 定义新数组
		int[] newarr = new int[arr.length];
		// 新数组索引
		int index = 0;
		for (int i = 0; i < arr.length; i++) {
			// 声明一个标记,每次重置
			boolean biaoji = true;
			// 内层循环将原数组元素逐个比较
			for (int j = i + 1; j < arr.length; j++) {
				// 判断是否重复,重复改变标记,结束内层循环
				if (arr[i] == arr[j]) {
					biaoji = false;
					break;
				}
			}
			// 判断标记是否被改变,如果没被改变,将原数组元素赋给新数组,下标++
			if (biaoji) {
				newarr[index] = arr[i];
				index++;
			}
		}
		// 打印出新数组
		for (int a : newarr) {
			System.out.print(a);
		}

	}

测试:定义一个二维素组   int[] arr = new int[] { 1, 5, 4, 5, 8, 7, 1, 1 };去重后的打印结果


为什么会这样呢?原来新数组存的是去重后的数组,重复元素被剔除,而我前面定义的新数组长度与原数组相同,所以后面会自动补0。

优化:经过我的一番思考我发现可以用arraycopy这个方法将去重后的数组在拷贝到一个新数组里面,就可以解决这个问题了。(代码如下)

// 1、去除数组中重复的元素
	public static void test(int[] arr) {
		// 定义临时数组
		int[] newarr = new int[arr.length];
		// 新数组索引
		int index = 0;
		for (int i = 0; i < arr.length; i++) {
			// 声明一个标记,每次重置
			boolean biaoji = true;
			// 内层循环将原数组元素逐个比较
			for (int j = i + 1; j < arr.length; j++) {
				// 判断是否重复,重复改变标记,结束内层循环
				if (arr[i] == arr[j]) {
					biaoji = false;
					break;
				}
			}
			// 判断标记是否被改变,如果没被改变,将原数组元素赋给新数组,下标++
			if (biaoji) {
				newarr[index] = arr[i];
				index++;
			}
		}
		// 定义新数组
		int[] newarrs = new int[index];
		// 复制
		System.arraycopy(newarr, 0, newarrs, 0, index);
		// 循环打印数组元素
		for (int a : newarrs) {
			System.out.print(a);
		}

	}

测试:


这样就ok了,写出来分享给大家,大家多多指教吐舌头

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值