搜索整数数组中的重复数字

时间:2014-05-27 06:42:58

标签: java

我想在数组中找到重复的数字。 为此,我将通过以下方式进行比较,但我无法获得所需的输出

新数组应包含没有重复的数字。

我试过以下

public static void main(String[] args) {

              int[] a={1,2,3,6,3,5,7,3,9,7};

              int[] k=new int[a.length];

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

                     for(int j=1;j<a.length;j++){
                           if(a[i]==a[j]){
                                  k[i]=a[j];    
                           }
                     }

              }

              for(int n=0;n<k.length;n++){
                     System.out.print(k[n]);
              }

       }

3 个答案:

答案 0 :(得分:1)

如果您不想找到重复项,但只想删除它们。以下方法可行。

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;


public class Test
{
    public static void main(String args[])
    {
        Integer[] a = new Integer[] {1,2,3,6,3,5,7,3,9,7};
        Set<Integer> numberset = new HashSet<Integer>(Arrays.asList(a));
        Integer[] output = numberset.toArray(new Integer[0]);
        for (Integer i : output)
        {
            System.out.println(i);
        }   
    }

}

答案 1 :(得分:0)

您应该将内循环从i+1迭代到长度,将其更改为以下。

for(int i=0;i<a.length;i++){
   for(int j=i+1;j<a.length;j++){
      if(a[i]==a[j]){
         k[i]=a[j];    
      }
   }
}

您的代码存在问题,它将检查a[i]中从1到n的所有值,并将比较这些值。所有i都适用于1 <= i < n

答案 2 :(得分:0)

很好。

public static void main(String[] args) {

    int[] a={1,2,3,6,3,5,7,3,9,7};

    int[] k=new int[a.length];

    Set<Integer> dups = new HashSet<Integer>();

    int index = 0;

    for(int i=0;i<a.length;i++){
        boolean found = false;
           for(int j=1;j<index && !found;j++){
                 if(a[i]==k[j]){
                     // found duplicate.
                     found = true;
                     dups.add(a[i]);
                 }
           }
           if (!found)
           {
               k[index++]=a[i];
           }

    }

    System.out.print("Unique entries: ");
    for(int n=0;n<index;n++){
        System.out.print(k[n]+" ");
 }

    System.out.println("\nDups:" + dups);

输出
Unique entries:1 2 3 6 5 7 9
Dups:[3, 7]