# Java Feld Duplikate löschen



## Karl Hermann (10. Mai 2011)

Hi, wenn ich z.B. folgendes Feld habe:


```
int[] field = {2,17,8,4,2,17};
```

Wie kann ich da möglichst einfach (mithilfe von for-schleifen) ein neues Feld erstellen, wo alle Duplikate (also Wertde die im Feld 2x vorkommen) gelöscht worden sind?

MfG
euer 
Karl Hermann


----------



## faetzminator (10. Mai 2011)

Willst/darfst du ein Set verwenden? Dann würde ich die Daten - die ich in einer Liste an Stelle des Arrays speichern würde - in ein Set schreiben und wieder zur Liste/Array konvertieren. Schon sind die doppelten raus  allerdings ist dann das Array nicht mehr in der ursprünglichen Reihenfolge.


----------



## AlexSpritze (10. Mai 2011)

```
Set<Integer> set = new HashSet<Integer>();
for(int i = 0 ; i < field.length; i ++) {
  set.add(field[i]);
}
Integer[] newField = set.toArray(new Integer[set.size()]);
```

Edit: Und wenn du willst, dass die Zahlen in der gleichen Reihenfolge stehen, dann nimmst du ein LinkedHashSet<Integer> 
Edit2: Hups, falscher add-Parameter


----------



## Karl Hermann (10. Mai 2011)

Danke für die Antworten^^

Nur ein Problem:
Ich darf kein Set benutzen


----------



## faetzminator (10. Mai 2011)

AlexSpritze hat gesagt.:


> Edit: Und wenn du willst, dass die Zahlen in der gleichen Reihenfolge stehen, dann nimmst du ein LinkedHashSet<Integer>



Stimmt 
Mit einer List<Integer> als Output wärs also etwa so lösbar: 

```
List<Integer> list = new ArrayList<Integer>(new LinkedHashSet<Integer>(Arrays.asList(2, 17, 8, 4, 2, 17)));
```


----------



## AlexSpritze (10. Mai 2011)

Ungetestet, aber so ungefähr, und alles ohne irgendwelche imports 


```
static void test() {
    int[] field = {2, 17, 8, 4, 2, 17};
    int[] newField = removeDuplicates(field);
   // System.out.println(java.util.Arrays.toString(newField)); // wie gesagt, ohne Imports ;)
  }

  static int[] removeDuplicates( int[] field ) {
    int[] newField = new int[field.length];
    int cnt = 0;
    for ( int i : field ) {
      if ( !isContained(i, field) ) {
        newField[cnt++] = i;
      }
    }
    int[] tmp = new int[cnt];
    System.arraycopy(newField, 0, tmp, 0, cnt);
    return tmp;
  }

  static boolean isContained( int number, int[] field ) {
    for ( int i = 0; i < field.length; i++ ) {
      if ( field[i] == number ) {
        return true;
      }
    }
    return false;
  }
```


----------

