2016-04-29 10 views
-1

Javaの重複要素を削除する簡単な方法はありますか?ありがとう:)Javaの配列データ構造体で重複しているInteger要素を削除する方法

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

@屯aki...私はそれが完全な質問ではないと思っています。完全な質問を読んで理解してください。重複していると思うのですが、私にリンクを教えてください。 – Vivek

+0

リンクはあなたの質問の先頭です。 – Tunaki

答えて

-2

まずuが既存の配列を変更するので、あなたは、配列むしろ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); 
      } 

     } 
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

私は、これは[OK]を

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; 
} 
関連する問題