A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 mnxnm 于 2015-5-31 10:25 编辑
  1. package itheima;

  2. /**
  3. *
  4. * 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
  5. *
  6. * @author sman@mnxnm.com
  7. *
  8. */
  9. public class Test5 {
  10.         public static void main(String[] args) {
  11.         // 数组去重复后,元素顺序没有改变,所以不能排序不能用冒泡法

  12.         int[] a = { 4, 2, 4, 6, 1, 2, 4, 7, 8 };
  13.         if (a.length > 1) { // 如果元素个数不足2个,直接打印结果

  14.             // 依次取出元素与并与右面的元素比较
  15.             for (int i = 0; i < (a.length - 1); i++) {
  16.                 for (int j = (i + 1); j < a.length;) {
  17.                     if ( a[i] == a[j]) {

  18.                         // 去除右面与左面重复的元素,并重新定义数组长度和元素内容
  19.                        int[] b = new int[a.length - 1];
  20.                        System.arraycopy(a, 0, b, 0, j);
  21.                        System.arraycopy(a, j + 1, b, j, b.length - j);
  22.                        a = b;
  23.                        
  24.                     } else {
  25.                         j++; // 数组重新定以后,下标不变,元素变成新的;当新元素与左面不重复时,才比较下一个元素
  26.                     }
  27.                 }
  28.             }
  29.         }
  30.                     //打印新数组
  31.                    System.out.println(Arrays.toString(a));
  32.         }
  33.     }
  34. }
复制代码

点评

谢谢,谢谢兄弟,,这是我邮箱 sman@mnxnm.com ,以后有问题直接电邮我 ,只要我会的,一定帮你!  发表于 2015-5-30 15:33
很给力,刚好老师出了这个题,要求不用set和list,谢谢!貌似这个论坛什么都要分,兄弟我的分全给你,  发表于 2015-5-30 15:17
你好,加我好友,好吗,我申请过了  发表于 2015-5-30 12:26
大哥,有QQ吗,加我,我们详聊  发表于 2015-5-30 12:18

评分

参与人数 2黑马币 +52 收起 理由
zhangniuren + 31 很给力,刚好老师出了这个题,要求不用set.
汗血宝马 + 21 很给力!

查看全部评分

33 个回复

正序浏览
遍历数组,直接用LinkedhashSet()集合不就可以了?
回复 使用道具 举报
太给力   拷贝下来好好研究
回复 使用道具 举报
hyl 中级黑马 2015-12-8 22:03:13
28#
去除数组的中的重复元素,要多次比较判断。for嵌套循环。
回复 使用道具 举报
6666666666666666666666666666666666666666666666666
回复 使用道具 举报
受教了  又学到了新东西
回复 使用道具 举报
mnxnm 发表于 2015-5-30 10:37
人多力量大,咱们组团吧

可以啊,大家一起努力    组团战斗
回复 使用道具 举报
不错不错,收藏了
回复 使用道具 举报
真的很好,长见识啦!:handshake
回复 使用道具 举报
mnxnm 中级黑马 2015-5-30 10:37:47
22#
天涯111 发表于 2015-5-30 09:45
人多力量大啊,讨论中学到的东西更多。大家多发表一下个人思路  分享一下。 ...

人多力量大,咱们组团吧:lol
回复 使用道具 举报
mnxnm 发表于 2015-5-29 17:38
嗯,是的,我是以纯文字发表的,点击"代码"后,在代码框里提交就好了

好吧    这个以前不知道啊,下次知道了,谢谢。
回复 使用道具 举报
mnxnm 发表于 2015-5-29 17:42
set是乱序的,用set去重后,元素的顺序会发生改变,所以没用set

哦,大家想的不同   我想的就是简单点   能实现题目要求就行:)
回复 使用道具 举报
人多力量大啊,讨论中学到的东西更多。大家多发表一下个人思路  分享一下。
回复 使用道具 举报
真心受教了
回复 使用道具 举报
新人报道,正在努力
回复 使用道具 举报
Melo 中级黑马 2015-5-29 21:29:33
16#
我用的集合做的
回复 使用道具 举报
我用的是集合,因为数组定长不确定重复的有多少个所以感觉还是集合好
回复 使用道具 举报
mnxnm 中级黑马 2015-5-29 18:26:53
14#

你和"地板"那一楼的,你们两个一样滴:lol
回复 使用道具 举报
mnxnm 中级黑马 2015-5-29 18:06:51
13#
志行 发表于 2015-5-29 17:42
视频里面我记得有   是搞了一个方法   该方法传入一个ArrayList  然后在方法里面在建立一个ArrayList   对 ...

是的,大多数人都是这么做的,引入了list集合,
集合变数组,数组变集合
我这个就是两个for循环,没有引入第三种对象进来
回复 使用道具 举报
mnxnm 中级黑马 2015-5-29 18:03:00
12#
yogkin 发表于 2015-5-29 15:20
可能是我能力问题,我看你的代码好吃力,下面是我的实现代码,自我感觉良好,你看看如何。

嗯,你的方法不错,
我们两个的思路刚好相反,
我的是逐个剔除重复元素
你的是逐个增加新元素,已经存在的就不添加
:lol
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马