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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhangfengg 中级黑马   /  2016-9-19 22:14  /  725 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

11 个回复

倒序浏览
把这些元素遍历添加到Linkedhashset里边去,然后再输出就完事了
回复 使用道具 举报
feng_pump 发表于 2016-9-19 22:32
把这些元素遍历添加到Linkedhashset里边去,然后再输出就完事了

能不能单一用数组的方法完成,求代码
回复 使用道具 举报
放入set或者map集合中,去重复,再转换成数组
回复 使用道具 举报
int[] array = { 6, 2, 9, 6, 1, 2, 6, 7, 8 };
                ArrayList<Integer> list = new ArrayList<Integer>();
                for (int i = 0; i < array.length; i++) {
                        list.add(array[i]);
                }
                for (int i = 0; i < list.size(); i++) {
                        for (int j = i + 1; j < list.size(); j++) {
                                if (list.get(i) == list.get(j)) {
                                        list.remove(j);
                                }
                        }
                }
                System.out.print("{");
                for (int i = 0; i < list.size(); i++) {
                        if (i < list.size() - 1) {
                                System.out.print(list.get(i) + ",");
                        } else
                                System.out.print(list.get(i));

                }
                System.out.println("}");
回复 使用道具 举报
public static void main(String[] args) {
                int[] array = { 6, 2, 9, 6, 1, 2, 6, 7, 8 };
                ArrayList<Integer> list = new ArrayList<Integer>();
                for (int i = 0; i < array.length; i++) {
                        list.add(array[i]);
                }
                for (int i = 0; i < list.size(); i++) {
                        for (int j = i + 1; j < list.size(); j++) {
                                if (list.get(i) == list.get(j)) {
                                        list.remove(j);
                                }
                        }
                }
                StringBuilder sb = new StringBuilder();
                sb.append("{");
                for (int i = 0; i < list.size(); i++) {
                        if (i < list.size() - 1) {
                                sb.append(list.get(i)).append(",");
                        } else
                                sb.append(list.get(i));
                }
                sb.append("}");
                System.out.println(sb);
        }
回复 使用道具 举报
我还没学set集合不过数组的特点是访问快删增慢所以还是用set更靠谱把
回复 使用道具 举报
回复 使用道具 举报
zhangfengg 发表于 2016-9-19 22:37
能不能单一用数组的方法完成,求代码

可以,拿数组的第一个元素和后面的所有值进行比较,如果后面没有就直接输出,如果后面有则跳过,再用第二个数进行比较,以此类推,用循环写方法,就可以解决!
回复 使用道具 举报
重新建一个集合,判断contains
回复 使用道具 举报
import java.util.Arrays; /*  * 作用:        去除一个数组中的重复元素,以不重复的形式输出  * 实例:        定义一个int类型的一维数组,内容为{6,2,9,6,1,2,6,7,8}  *                 去除上面定义的数组中的重复元素,打印最终结果{6, 2, 9, 1, 7, 8}、  * 思路:        定义一个与原数组长度相同的数组,将原数组中数一个个取出放入  *                 放入前执行判断,若无重复则,将其添加进数组,并记录添加次数  *                 返回这个数组新添加的位数  */ public class QuChuChongFuYuanSu {          public static void main(String[] args) {                 int[] arr = {6,2,9,6,1,2,6,7,8};                 int[] newarr = a(arr);                 show(newarr);         }                  public static int[] a(int[] arr){                 //定义新数组                 int[] arr0 = new int[arr.length];                 //外层循环,取出原数组的数,定义一个数记录添加了几次                 int sum = 0;                 for(int i = 0; i < arr.length; i++){                         if( i == 0) arr0[0] = arr[i];                         //放前判断,遍历新数组,创建一个数存储是否有重复元素,默认无重复                         boolean have = false;                         for( int arr1 : arr0){                                 if( arr1 == arr[i]){                                         have = true;                                         break;                                 }                         }                         //若无重复,have依旧为false就添加                         if(!have){                                 arr0[sum] = arr[i];                                 sum++;                                 }                 }                 //全部添加完毕返回一个阶段到sum的数组                 return Arrays.copyOfRange(arr0, 0, sum);         }         public static void show(int[] arr){                 System.out.print("{");                 for(int i = 0; i < arr.length - 1; i++){                         System.out.print(arr[i] + ",");                 }                 System.out.println(arr[arr.length - 1] + "}");         } }
回复 使用道具 举报
import java.util.Arrays;
/*
* 作用:        去除一个数组中的重复元素,以不重复的形式输出
* 实例:        定义一个int类型的一维数组,内容为{6,2,9,6,1,2,6,7,8}
*                 去除上面定义的数组中的重复元素,打印最终结果{6, 2, 9, 1, 7, 8}、
* 思路:        定义一个与原数组长度相同的数组,将原数组中数一个个取出放入
*                 放入前执行判断,若无重复则,将其添加进数组,并记录添加次数
*                 返回这个数组新添加的位数
*/
public class QuChuChongFuYuanSu {

        public static void main(String[] args) {
                int[] arr = {6,2,9,6,1,2,6,7,8};
                int[] newarr = a(arr);
                show(newarr);
        }
       
        public static int[] a(int[] arr){
                //定义新数组
                int[] arr0 = new int[arr.length];
                //外层循环,取出原数组的数,定义一个数记录添加了几次
                int sum = 0;
                for(int i = 0; i < arr.length; i++){
                        if( i == 0) arr0[0] = arr[i];
                        //放前判断,遍历新数组,创建一个数存储是否有重复元素,默认无重复
                        boolean have = false;
                        for( int arr1 : arr0){
                                if( arr1 == arr[i]){
                                        have = true;
                                        break;
                                }
                        }
                        //若无重复,have依旧为false就添加
                        if(!have){
                                arr0[sum] = arr[i];
                                sum++;       
                        }
                }
                //全部添加完毕返回一个阶段到sum的数组
                return Arrays.copyOfRange(arr0, 0, sum);
        }
        public static void show(int[] arr){
                System.out.print("{");
                for(int i = 0; i < arr.length - 1; i++){
                        System.out.print(arr[i] + ",");
                }
                System.out.println(arr[arr.length - 1] + "}");
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马