2016-04-29 2 views
-1

Gibt es eine einfache Möglichkeit, doppelte Elemente in Java zu entfernen (funktionieren zwei Schleifen und wie). Danke :)So entfernen Sie doppelte Integer-Elemente in Array-Datenstruktur in 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

Ok wäre hilfreich, ich question.please sehen bin der Bearbeitung, wenn dies hilfreich genug ist. – Vivek

+0

@Tunaki ... Ich glaube nicht, dass es ein GENAUES duplicate.please ist, lesen Sie die volle Frage und versuchen Sie zu verstehen. Wenn Sie denken, dass es doppelte Frage ist, stellen Sie mir bitte einen Link zur Verfügung? – Vivek

+0

Der Link steht oben auf Ihrer Frage. – Tunaki

Antwort

-2

Erste kippe u das bestehende Array ändern, so müssen ein neues Array seine eindeutige Zahlen zu halten, wieder, wie Sie im Voraus besser nutzen Arraylist eher Array kennen die Anzahl der Element nicht. Wenn Sie nicht zu viel Logik oder weniger Anzahl von Schleifen schreiben möchten, können Sie dies versuchen.

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

Diese Arbeit sollte ..

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

Sie auf diese Weise versuchen:

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 eine schöne Art und Weise bietet diese IntStream mit zu tun.

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

Ich denke, das

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