2016-04-29 38 views
-1

是否有任何简单的方法来删除Java中的重复元素(两个循环是否工作以及如何工作)。谢谢:)如何删除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.  
      } 
    }  
    } 
+0

好吧,我编辑question.please看看这是足够的帮助。 – Vivek

+0

@Tunaki ...我不认为这是一个确切的duplicate.please阅读完整的问题,并试图理解。如果你认为这是重复的问题,请给我一个链接? – Vivek

+0

链接位于问题的顶部。 – Tunaki

回答

-2

首先,你不知道元素的数量事先更好地使用ArrayList而排列U不能改变现有的阵列,因此需要一个新的数组来保存他独一无二的号码,再次。如果你不想写太多的逻辑或更少的循环数,你可以试试这个。

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); 
      } 

     } 
4

这应该工作..

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

你可以试试这个方法:

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

for (int w: arr) { 
    set.add(w); 
} 
2

的Java 8提供了一个很好的方法来做到这一点使用IntStream

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

我认为这将是有益的

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; 
}