【问题标题】:How to remove duplicate Integer elements in array data structure in java如何在java中删除数组数据结构中的重复整数元素
【发布时间】:2016-04-29 18:18:22
【问题描述】:

有没有什么简单的方法可以删除 Java 中的重复元素(两个循环是否有效以及如何工作)。谢谢:)

IN: int[] arr = {1,3,4,2,3,1,6,7,7};
Output i want is:
{1,3,4,2,6,7}

the only i know is we can traverse it through loop.
 eg.
  for(int i = 0;i < arr.length;i++){
   for(int j = 0;j<arr.length;j++){

        if(    ){
          //what logic i can apply here.      
          }
     }       
   }

【问题讨论】:

  • 好的,我正在编辑问题。请看看这是否足够有用。
  • @Tunaki ...我不认为这是一个完全重复的问题。请阅读完整的问题并尝试理解。如果您认为这是重复的问题,请给我一个链接?
  • 链接在您问题的顶部。
  • 因为我是初学者,所以很难理解。你能根据我的问题解决它吗。我正在寻找一种我能理解的简单方法。谢谢
  • 无法在 Java 中调整数组的大小。你必须要么返回一个没有重复的新数组,要么返回一个不同的数据结构,如列表

标签: java arrays data-structures linked-list


【解决方案1】:

这应该可行..

final Integer[] noDuplicates =
    new LinkedHashSet<>(Arrays.asList(arr)).toArray(new Integer[0]);

【讨论】:

    【解决方案2】:

    Java 8 提供了一种使用IntStream 的好方法。

    arr = Arrays.stream(arr) // Convert arr to IntStream
            .distinct()      // Get distinct elements (preserves order)
            .toArray();      // Convert back to array
    

    【讨论】:

      【解决方案3】:

      你可以试试这个方法:

      int[]arr = {1,3,4,2,3,1,6,7,7};
      Set <Integer> set = new HashSet<Integer>();
      
      for ( int w: arr) {
           set.add(w);
      }
      

      【讨论】:

        【解决方案4】:

        我认为这会有所帮助

         public static int[] removeduplicate(int a[])
         {
            int count=0;
            for(int i=0;i<a.length;i++)
            {
                 for(int j=i+1;j<a.length;j++)
                 {
                    if(a[i]==a[j])
                    {
                      a[j]=-1;
                      count++;
                    }
                 }
             }
              int b[]=new int[a.length-count];
              for(int i=0;i<a.length;i++)
              {
                    if(a[i]!=-1)
                  {
                      for(int j=0;j<(a.length-count);j++)
                      {
                           b[j]=a[i];
                      }
                  }
             }
              return b;
         }
        

        【讨论】:

          【解决方案5】:

          您可以使用集合数据结构从数组中删除重复元素。

             int arr[] = {1, 6, 4, 7, 8, 4, 7, 9, 3, 8};
          
              Set<Integer> uniqueNumber = new HashSet<>();
          
              for(int i = 0; i < arr.length; i++) {
                  //It only contains unique element
                  uniqueNumber.add(arr[i]);
              }
          

          作为参考,您可以查看此视频教程https://www.youtube.com/watch?v=0HBIMjwte7s。我觉得它很有帮助。

          【讨论】:

            【解决方案6】:

            首先你不能改变现有的数组,所以需要一个新的数组来保存他的唯一数字,同样你不知道元素的数量最好使用 ArrayList 而不是数组。如果你不想写太多逻辑或更少的循环,你可以试试这个。

            int[] arr = {1,3,4,2,3,1,6,7,7};
                    HashSet<Integer> hs = new HashSet<Integer>();
                     ArrayList<Integer> unique=new ArrayList<Integer>();
            
                    for(int num:arr){
                        if(hs.add(num)){
                            unique.add(num);
                        }
            
                    }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-03-23
              • 2010-10-13
              • 1970-01-01
              • 2018-11-04
              • 1970-01-01
              • 2018-02-14
              相关资源
              最近更新 更多