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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/**
* 7、 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
*
* @author Administrator
*
*/
public class Test7 {
        public static int[] first = {4,2,4,6,1,2,4,7,8};
   /**
    * 主要思路:
    * 1、查出哪个是重复的
    * 2、按删除该元素并返回新数组到静态数组里
    * 3、循环至没有再重复的数组元素并输出元素                       
    * @param args
    */
        public static void main(String[] args) {
                for (int y = 0; y < first.length; y++) {
                        Boolean res = Test7.Quchong(first);
                        if (res) {
                                break;
                        }
                }
                for (int z = 0; z < first.length; z++) {
                        System.out.println(first[z]);
                }


        }
        /**
         * 去重方法
         * @param temp
         * @return flag true为无重复值了
         */
        public static boolean Quchong(int[] temp) {
                boolean flag = true;
                for (int i = 1; i < temp.length;) {
                        for (int j = 0; j < i; j++) {
                                //如果重复,删掉并存回原数组
                                if (temp == temp[j]) {
                                        int[] ary = new int[temp.length - 1];
                                        // System.out.println(temp+"重复了");
                                        System.arraycopy(temp, 0, ary, 0, i);
                                        System.arraycopy(temp, i + 1, ary, i, ary.length - i);
                                        first = ary;
                                        flag = false;
                                } else {


                                }
                        }
                        i++;
                }
                return flag;


        }
}



分析:上面的例子,我是通过先查询出重复的元素,然后将其后的元素存放到first数组中,然后再进行元素筛选。
其中用到了数组的复制:       
System.arraycopy(temp, i + 1, ary, i, ary.length - i);
//public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
所以为从temp数组的i+1开始复制,复制到ary里,复制到的位置为i一直到末尾。


数组的赋值直接使用数组名+角标就可以了。
数组的读取:用循环增加角标数,然后用数组名就读取了

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马