黑马程序员技术交流社区

标题: 关于入学基础测试中的“数组去重”问题 [打印本页]

作者: 小小菜鸟    时间: 2014-1-5 10:50
标题: 关于入学基础测试中的“数组去重”问题
本帖最后由 小小菜鸟 于 2014-1-5 15:06 编辑

数组去重例如:
原始数组是{4,2,4,6,1,2,4,7,8}
得到结果{4,2,6,1,7,8}
作者: 程玉习    时间: 2014-1-5 11:06
本帖最后由 程玉习 于 2014-1-5 11:09 编辑

我用的是集合,HashSetpublic class Test5 {
        static int[] arr = {4,2,4,6,1,2,4,7,8};
        public static void main(String[] args) {
                delRep(arr);
        }
        //定义一个方法,形参接收一个整型数组
        public static void delRep(int[] arr) {
       
                HashSet<Integer> hashSet = new HashSet<Integer>();
               
                for (int i = 0; i < arr.length; i++) {
                       
                        hashSet.add(arr);
                }
               
                System.out.println(hashSet);
               
        }

}



作者: 松毛    时间: 2014-1-5 12:29
本帖最后由 松毛 于 2014-1-5 12:32 编辑

利用集合可以把它弄出来!这下面是我的代码
  1. import java.util.ArrayList;

  2. public class Test08 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 int[] array = {4,2,4,6,1,2,4,7,8};
  9.                 System.out.println(singleElemet(array)/*.toArray()*/);//这得到的是一个集合,只要把他转换正数组就行;
  10.                
  11.         }

  12.         private static ArrayList<Integer> singleElemet(int[] array) {
  13.                 ArrayList<Integer> list = new ArrayList<Integer>();
  14.                 for(int i=0; i<array.length; i++){
  15.                         list.add(array[i]);
  16.                 }       
  17.                 ArrayList<Integer> li = new ArrayList<Integer>();
  18.                 for(Integer list1: list){
  19.                         if(!(li.contains(list1)))
  20.                                 li.add(list1);
  21.                 }
  22.                 return li;
  23.         }
  24. }
复制代码




作者: 疯狂的土贼    时间: 2014-1-5 12:31
参考下以上的方式 采用集合的形式解决即可
作者: jibenwujie    时间: 2014-1-5 13:55
  1. public class Test02 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                
  7.                 int a[] = {4,2,4,6,1,2,4,7,8};
  8.                
  9.                 Set<Integer> set = new HashSet<Integer>();
  10.                
  11.                 //存入hashset 自动去重复
  12.                 for(int i = 0 ; i < a.length ; i ++){
  13.                         set.add(a[i]);
  14.                 }
  15.                
  16.         }

  17. }
复制代码

楼主你好,使用HashSet的不重复的特点 ,即可解决去重复问题
作者: ixiangfeng    时间: 2014-1-5 14:11
用集合的话应该很简单,因为集合本身的比较器就具有去重功能
我再发个用数组写的 稍微复杂一点
  1. public class Demo
  2. {
  3.         public static void main(String [] args)
  4.         {
  5.                 int [] arr = {4,2,4,6,1,2,4,7,8};
  6.                 int [] arr1 = new int [arr.length];//用于存放去重后的数组
  7.                 int pos = 0;//数组指针
  8.                 boolean flag = true;//定义标记,用于判断是否是重复元素
  9.                 for (int x = arr.length-1; x >=0 ; x--)//遍历数组,把一元素和后面所有
  10.                 {                                      //元素进行比较,若相同,则改变
  11.                         for (int y = x-1; y >= 0; y--)     //标记flag,若该元素与后面所有
  12.                         {                                  //元素都不同,则标记不变,将其
  13.                                 if (arr[x] == arr[y])          //存入新数组中,然后重置标记
  14.                                 {
  15.                                         flag = false;
  16.                                 }

  17.                         }

  18.                         if (flag)
  19.                         {
  20.                                 arr1[pos++] = arr[x];
  21.                         }

  22.                         flag = true;
  23.                 }

  24.                 for ( int x = pos-1; x >=0; x--)
  25.                 {
  26.                         System.out.print(arr1[x]+" ");
  27.                 }
  28.         }
  29. }
复制代码





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