哈哈哈123457
2017-06-14 03:46
采纳率: 100%
浏览 3.2k
已采纳

java 数组如何去除重复元素

java 数组如何去除重复元素。。。。。。。。。。。。。。。。。。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 北宫清云 2017-06-14 05:51
    已采纳

    也是自己写的,纯数组去重处理:
    /*

    • 去除数组中的重复元素
      */
      public class RemoveRepeated {

      public static int[] delete(int[] arr,int index){
      int[] newArr=new int[arr.length-1];
      for(int i=0;i if(i>=index)
      newArr[i]=arr[i+1];

      else
      newArr[i]=arr[i];
      }
      arr=newArr;
      return arr;
      }
      //保留在第一次出现的位置
      public static int[] removeRepeated1(int[] arr){
      for(int i=0;i<arr.length;i++){
      for(int j=i+1;j<arr.length;j++){
      if(arr[i]==arr[j]){
      arr=delete(arr,j);
      j--;
      }
      }
      }
      return arr;
      }

      //保留在最后一次出现的位置
      public static int[] removeRepeated2(int[] arr){
      for(int i=0;i<arr.length;i++){
      for(int j=i+1;j<arr.length;j++){
      if(arr[i]==arr[j]){
      arr=delete(arr,i);
      j--;
      }

          }
      
      }
      return arr;
      

      }
      //全部去除
      public static void removeRepeated3(int[] arr){

      int temp=0;
      for(int i=0;i<arr.length;i++){
          for(int j=0;j<arr.length;j++){
              if(arr[i]==arr[j]&&i!=j)
              {
                  temp=arr[i];
              }
      
          }
          if(arr[i]!=temp){
              System.out.print(arr[i]+"\t");
          }
      
      }
      

      }

      public static void loop(int[] arr){

      for(int i=0;i<arr.length;i++){
          System.out.print(arr[i]+"\t");
      }
      System.out.println();
      

      }
      public static void loopOld(int[] arr){

      for(int i=0;i<arr.length;i++){
          System.out.print(arr[i]+"\t");
      }
      System.out.println();
      

      }

      public static void main(String[] args) {
      int[] arr={2,2,2,4,10,2,3,4};
      System.out.print("老数组为: ");
      loopOld(arr);

      System.out.print("去重的数组为(保留第一次出现的位置):   ");
      loop(removeRepeated1(arr));
      
      System.out.print("去重的数组为(保留最后一次出现的位置):");
      loop(removeRepeated2(arr));
      
      System.out.print("去重的数组为(全部去除):                            ");
      removeRepeated3(arr);
      

      }

    }

    点赞 打赏 评论
  • FEN_TA 2017-06-14 03:48

    放到hashset里面再取出来

    点赞 打赏 评论
  • 南宫文凯 2017-06-14 03:59

    1、方法一
    [java] view plain copy
    //数组去重方法一

    String[] array = {"a","b","c","c","d","e","e","e","a"};

    List result = new ArrayList<>();

    boolean flag;

    for(int i=0;i<array.length;i++){

    flag = false;

    for(int j=0;j<result.size();j++){

    if(array[i].equals(result.get(j))){

    flag = true;

    break;

    }

    }

    if(!flag){

    result.add(array[i]);

    }

    }

    String[] arrayResult = (String[]) result.toArray(new String[result.size()]);

    System.out.println(Arrays.toString(arrayResult));

    先遍历原数组,然后遍历结束集,通过每个数组的元素和结果集中的元素进行比对,若相同则break。若不相同,则存入结果集。
    两层循环进行遍历得出最终结果。

    2、方法二
    [java] view plain copy
    //数组去重方法二

    String[] array = {"a","b","c","c","d","e","e","e","a"};

    List list = new ArrayList<>();

    list.add(array[0]);

    for(int i=1;i<array.length;i++){

    if(list.toString().indexOf(array[i]) == -1){

    list.add(array[i]);

    }

    }

    String[] arrayResult = (String[]) list.toArray(new String[list.size()]);

    System.out.println(Arrays.toString(arrayResult));

    通过使用indexOf方法进行判断结果集中是否存在了数组元素。

    3、方法三
    [java] view plain copy
    //数组去重方法三

    String[] array = {"a","b","c","c","d","e","e","e","a"};

    List list = new ArrayList<>();

    for(int i=0;i<array.length;i++){

    for(int j=i+1;j<array.length;j++){

    if(array[i] == array[j]){

    j = ++i;

    }

    }

    list.add(array[i]);

    }

    String[] arrayResult = (String[]) list.toArray(new String[list.size()]);

    System.out.println(Arrays.toString(arrayResult));

    嵌套循环,进行比较获取满足条件结果集。

    4、方法四
    [java] view plain copy
    //数组去重方法四

    String[] array = {"a","b","c","c","d","e","e","e","a"};

    Arrays.sort(array);

    List list = new ArrayList<>();

    list.add(array[0]);

    for(int i=1;i<array.length;i++){

    if(!array[i].equals(list.get(list.size()-1))){

    list.add(array[i]);

    }

    }

    System.out.println(Arrays.toString(arrayResult));
    先使用java提供的数组排序方法进行排序,然后进行一层for循环,进行相邻数据的比较即可获得最终结果集。
    5、方法五
    [java] view plain copy
    //数组去重方法五

    String[] array = {"a","b","c","c","d","e","e","e","a"};

    Set set = new HashSet<>();

    for(int i=0;i<array.length;i++){

    set.add(array[i]);

    }

    String[] arrayResult = (String[]) set.toArray(new String[set.size()]);

    System.out.println(Arrays.toString(arrayResult));

    1、ArrayList集合转数组
    [java] view plain copy
    String[] arrayResult = (String[]) list.toArray(new String[list.size()]);

    点赞 打赏 评论
  • legendCoder 2017-06-14 04:01

    自己代码实现如下:
    int[] arr = new int[]{1,2,3,4,23,3,5,1};
    ArrayList arrList = new ArrayList();
    for(int i=0; i {
    if(!arrList.contains(arr[i]))
    arrList.add(arr[i]);
    }
    Iterator inter = arrList.iterator();
    while(inter.hasNext())

    如果想简单点,可以把数据全部放入HashSet中,里面不会包含重复元素。有重复的会被替换掉。

    点赞 打赏 评论
  • 北宫清云 2017-06-14 05:52
     /*
     * 去除数组中的重复元素
     */
    public class RemoveRepeated {
    
        public static int[] delete(int[] arr,int index){
            int[] newArr=new int[arr.length-1];
            for(int i=0;i<newArr.length;i++){
                if(i>=index)
                    newArr[i]=arr[i+1];         
                else
                    newArr[i]=arr[i];
            }
            arr=newArr;
            return arr;
        }
        //保留在第一次出现的位置
        public static int[] removeRepeated1(int[] arr){
            for(int i=0;i<arr.length;i++){
                for(int j=i+1;j<arr.length;j++){
                    if(arr[i]==arr[j]){
                        arr=delete(arr,j);
                        j--;
                    }
                }
            }
            return arr;
        }
    
        //保留在最后一次出现的位置
        public static int[] removeRepeated2(int[] arr){
            for(int i=0;i<arr.length;i++){
                for(int j=i+1;j<arr.length;j++){
                    if(arr[i]==arr[j]){
                        arr=delete(arr,i);
                        j--;
                    }
    
                }
    
            }
            return arr;
        }
        //全部去除
        public static void removeRepeated3(int[] arr){
    
            int temp=0;
            for(int i=0;i<arr.length;i++){
                for(int j=0;j<arr.length;j++){
                    if(arr[i]==arr[j]&&i!=j)
                    {
                        temp=arr[i];
                    }
    
                }
                if(arr[i]!=temp){
                    System.out.print(arr[i]+"\t");
                }
    
            }
    
        }
    
        public static void loop(int[] arr){
    
            for(int i=0;i<arr.length;i++){
                System.out.print(arr[i]+"\t");
            }
            System.out.println();
        }
        public static void loopOld(int[] arr){
    
            for(int i=0;i<arr.length;i++){
                System.out.print(arr[i]+"\t");
            }
            System.out.println();
    
        }
    
    
        public static void main(String[] args) {
            int[] arr={2,2,2,4,10,2,3,4};
            System.out.print("老数组为:                                                         ");
            loopOld(arr);
    
            System.out.print("去重的数组为(保留第一次出现的位置):   ");
            loop(removeRepeated1(arr));
    
            System.out.print("去重的数组为(保留最后一次出现的位置):");
            loop(removeRepeated2(arr));
    
            System.out.print("去重的数组为(全部去除):                            ");
            removeRepeated3(arr);
        }
    
    }
    
    点赞 打赏 评论
  • bacoder 2017-06-15 11:17

    放入set里

            String[] ss = {"1","2","3","4","5","12","3","2","3","5"};
            Set<String> set = new TreeSet();
            Collections.addAll(set, ss);
            ss = (String[])set.toArray(new String[set.size()]);
    
            for (int i = 0; i < ss.length;i++){
                System.out.println(ss[i]);
            }
    
    点赞 打赏 评论

相关推荐 更多相似问题