黑马程序员技术交流社区

标题: 怎么删除数组中重复的元素. [打印本页]

作者: zhang900124    时间: 2016-9-26 16:04
标题: 怎么删除数组中重复的元素.
重点是怎么删除,for循环嵌套然后,怎么删除,,基础一点的,是新建一个数组还是删除重复的,

作者: zhang900124    时间: 2016-9-26 16:07
在线等大神回复
作者: 李鑫246    时间: 2016-9-26 21:15
学集合了么?直接遍历数组导入HashSet集合
作者: Fate_stay    时间: 2016-9-27 17:06
创建一个HashSet集合对象,遍历数组将元素放进去,再把set打印出来就行. 如果没学集合的话,就创建一个新数组,遍历旧数组, 如果有一样的就不放入新数组,不一样的元素就放进去.
作者: Fate_stay    时间: 2016-9-27 17:08
创建一个HashSet集合对象,遍历数组将元素放进去,再把set打印出来就行. 如果没学集合的话,就创建一个新数组,遍历旧数组, 如果有一样的就不放入新数组,不一样的元素就放进去.
作者: IceLoveInFire丶    时间: 2016-9-27 21:14
数组长度是不能变的,所以没有办法删除,只有重新创建一个数组,但是前提你必须知道有几个元素重复(可以先遍历一遍原数组,间接求出新数组长度),不然没办法定义新数组的长度,再通过循环把元素赋值到新数组中。
如果用集合就简单很多了
作者: CreScert    时间: 2016-9-27 21:30
要是不涉及到集合,还是新建一个数组吧。毕竟不和c语言一样有一个字符结束符,删除的数组的值只能用其他的数值放在最后并用其他的数值表示,最终数组的长度还是没有变,
作者: zhang900124    时间: 2016-9-27 22:28
好吧,大神们,我才学到面向对象,,Hashset, list,都还没学,这个是扩展题,就让用最基础的做,已经有答案了,大概流程就是循环比较,把相同的第一个值拿出来,放到另外一数组中!
作者: bahamut322    时间: 2016-9-27 22:37
遍历一下嘛
作者: 暮雨微凉    时间: 2016-9-28 08:28
新建一个数组,嵌套for循环 若相等则不介入
作者: Fate_stay    时间: 2016-9-28 21:27
新建一个数组存吧, 不用删除
作者: cat哥    时间: 2016-9-28 21:32
本帖最后由 cat哥 于 2016-9-28 21:34 编辑

没学到集合 想了一下午没做出来,晚上就百度了一下  你参考看看
[Java] 纯文本查看 复制代码
package com.heima.homework;
public class check_num {
        //2:定义一个长度为10的数组,随机存储1-10的数据到里面,十个数据不能重复.
        public static void main(String[] args) {  
                int[] a = new int[10];  
                int x = 0;  
                for (int i = 0; i < a.length; i++) {  
                        // 此循环用于判断是否符合条件  
                        do {  
                                x = (int) (Math.random() * 10 + 1);  
                        }
                        while (checkNum(a, x, i));  
                        a = x;  
                        System.out.print(" " + a + " ");
                }  
                //System.out.println(Arrays.toString(a));  
        }  
  
  
    /**
     * 检验生成的值s
     * @param a数组
     * @param x初始的赋值
     * @param i下标
     * @return true 继续循环否则跳出循环
     */  
        private static boolean checkNum(int[] a, int x, int i) {  
                for (int j = 0; j < a.length; j++) {  
                        if (x == a[j]) {  
                return true;  
                        }  
                }  
                return false;  
        }
}


作者: markiyangliu    时间: 2016-9-28 22:33
用集合吧
作者: 宋木木    时间: 2016-9-29 10:04
如果你不使用集合的话就是将元素放入数组在判断,可以先统计出不同元素的种类个数来决定数组的长度,使用集合的话楼上的兄弟说的很明白了;
作者: 叫我宁采臣    时间: 2016-9-29 16:24
把他存入个集合就行了呀
作者: changfa    时间: 2016-9-29 18:42
重件一个数组把遍历出来不同的放入里面  在打印出来
作者: langyabang1110    时间: 2016-9-29 21:51
向另一个数组放值  一样就不放 不一样就填加
作者: Zzh94520    时间: 2016-9-29 21:56
666666666666666666
作者: 杜亚超    时间: 2016-9-29 22:05
数组是不能删除的,数组转化为集合。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2