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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

分析以下需求,并用代码实现:
(1)定义一个int类型的一维数组,内容为{6,2,9,6,1,2,6,7,8}
(2)去除上面定义的数组中的重复元素,打印最终结果{6, 2, 9, 1, 7, 8}

5 个回复

倒序浏览
我只能告诉你思路,具体代码还是你自己去写吧。假如:设定你这个数组是A,你再定义一个数组,或者集合B,然后循遍历数组A,每遍历一个元素,判断一下数组B里面有没有这个元素,如果没有的话,就把这个元素放到数组B里面去,如果有的话,就略过,这样循环完之后,那么数组B里面的元素就是你要的结果。

评分

参与人数 1黑马币 +1 收起 理由
洋葱头头 + 1 很给力!

查看全部评分

回复 使用道具 举报
1、费空间的方法:定义一个Set,把这个数组存入set,再遍历set即可
2、费时间的方法:逐个元素对比,没有重复的存入一个新数组,最后再遍历这个新数组

评分

参与人数 1黑马币 +1 收起 理由
洋葱头头 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
参禅悟道 发表于 2016-3-15 19:22
我只能告诉你思路,具体代码还是你自己去写吧。假如:设定你这个数组是A,你再定义一个数组,或者集合B,然 ...

好的,我想了好半天,做了一个这样的,你看看是不是很啰嗦:
/**
        (1)定义一个int类型的一维数组,内容为{6,2,9,6,1,2,6,7,8}
        (2)去除上面定义的数组中的重复元素,打印最终结果{6, 2, 9, 1, 7, 8}
*/
class Demo_Array {
        public static void main(String[] args) {
                int [] arr = {6,2,9,6,1,2,6,7,8};
                MyArray aa = new MyArray();                //实例化对象
                for (int i=0;i<arr.length ;i++ ){
                        aa.addArrayData(arr);
                }
                for(int i = 0;i<aa.getSize();i++){
                        System.out.print(aa.getArray(i)+"  ");//输出容器内指定数据
                }
                System.out.println();

        }
}
class MyArray{
        private int [] array = new int [0];        //创建一各数组,长度为0
        private int size;                                        //数组的大小
        public int getArray(int num){                //获取数组指定交表的元素
                return array[num];
        }
        public int[] getArray(){                        //获取数组
                return array;
        }
        public int getSize(){                                //获取数组大小
                return size;
        }
        /**
        向数组中添加元素
        */
        public void addArrayData(int num){
                if (this.isEquals(num)){
                        /**定义一个新数组,用来接收和数组中不相同的元素*/
                        int[] newArray = new int[this.array.length+1];
                        for(int i = 0;i<this.array.length;i++){
                                newArray = this.array;
                        }
                        newArray[newArray.length-1] = num;
                        this.size++;
                        this.array = newArray;
                }else{
                        System.out.println(num+"是重复的数据,未被写入");
                }
        }
        /**
        判断是否为重复数组
        */
        public boolean isEquals(int num) {
                for(int i = 0;i<this.array.length;i++){
                        if(num == this.array){
                                return false;
                        }
                }
                return true;
        }
       
}
回复 使用道具 举报
ameanboy 发表于 2016-3-15 22:23
1、费空间的方法:定义一个Set,把这个数组存入set,再遍历set即可
2、费时间的方法:逐个元素对比,没有重 ...

多谢多谢
回复 使用道具 举报
我的思路是把数组转变成一个集合;直接定义一个数啊;然后遍历集合对比,遇见相同的把后面的那个删掉,同时把i-1(假设是i作为循环的变量,这样防止删掉一个数后集合长度变短导致循环漏数);然后把集合在转变成数组;看起来麻烦了点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马