黑马程序员技术交流社区

标题: 数组题目,大家来试试 [打印本页]

作者: zhangfengg    时间: 2016-9-19 22:14
标题: 数组题目,大家来试试
分析以下需求,并用代码实现:
        (1)定义一个int类型的一维数组,内容为{6,2,9,6,1,2,6,7,8}
        (2)去除上面定义的数组中的重复元素,打印最终结果{6, 2, 9, 1, 7, 8}
作者: feng_pump    时间: 2016-9-19 22:32
把这些元素遍历添加到Linkedhashset里边去,然后再输出就完事了
作者: zhangfengg    时间: 2016-9-19 22:37
feng_pump 发表于 2016-9-19 22:32
把这些元素遍历添加到Linkedhashset里边去,然后再输出就完事了

能不能单一用数组的方法完成,求代码
作者: 细听风语为梧桐    时间: 2016-9-19 22:41
放入set或者map集合中,去重复,再转换成数组

作者: lixuelin    时间: 2016-9-19 23:09
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("}");
作者: lixuelin    时间: 2016-9-19 23:12
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);
        }
作者: lixuelin    时间: 2016-9-19 23:14
我还没学set集合不过数组的特点是访问快删增慢所以还是用set更靠谱把
作者: 若白衣卿相    时间: 2016-9-19 23:19
http://bbs.itheima.com/thread-127552-1-1.html 看下这个帖子
作者: mawenliang    时间: 2016-9-19 23:28
zhangfengg 发表于 2016-9-19 22:37
能不能单一用数组的方法完成,求代码

可以,拿数组的第一个元素和后面的所有值进行比较,如果后面没有就直接输出,如果后面有则跳过,再用第二个数进行比较,以此类推,用循环写方法,就可以解决!
作者: haoge349    时间: 2016-9-19 23:57
重新建一个集合,判断contains
作者: 若白衣卿相    时间: 2016-9-20 08:55
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] + "}");         } }
作者: 若白衣卿相    时间: 2016-9-20 08:56
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] + "}");
        }
}





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