黑马程序员技术交流社区

标题: 有大神进来看下,这个题怎么做呢? [打印本页]

作者: 花花笑脸人    时间: 2016-3-15 18:15
标题: 有大神进来看下,这个题怎么做呢?
分析以下需求,并用代码实现:
(1)定义一个int类型的一维数组,内容为{6,2,9,6,1,2,6,7,8}
(2)去除上面定义的数组中的重复元素,打印最终结果{6, 2, 9, 1, 7, 8}

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

作者: ameanboy    时间: 2016-3-15 22:23
1、费空间的方法:定义一个Set,把这个数组存入set,再遍历set即可
2、费时间的方法:逐个元素对比,没有重复的存入一个新数组,最后再遍历这个新数组
作者: 花花笑脸人    时间: 2016-3-16 00:42
参禅悟道 发表于 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;
        }
       
}

作者: 花花笑脸人    时间: 2016-3-16 00:43
ameanboy 发表于 2016-3-15 22:23
1、费空间的方法:定义一个Set,把这个数组存入set,再遍历set即可
2、费时间的方法:逐个元素对比,没有重 ...

多谢多谢
作者: a13979214809    时间: 2016-3-16 23:31
我的思路是把数组转变成一个集合;直接定义一个数啊;然后遍历集合对比,遇见相同的把后面的那个删掉,同时把i-1(假设是i作为循环的变量,这样防止删掉一个数后集合长度变短导致循环漏数);然后把集合在转变成数组;看起来麻烦了点




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