# ArrayList nur ergänzen wenn Element noch nicht vorhanden



## shark95 (10. Mrz 2011)

Hallo,

ich hab folgendes Problem und komm einfach auf keine brauchbare lösung:
ich hab eine arraylist mit Strings, welche laufend ergänzt wird. Ich möchte aber ein Element nur hinzufügen wenn das Element noch nicht in der Arraylist ist. Dazu  iteriere ich vor dem Hinzufügen eines Elements die Arraylist und vergleiche mit equals ob es schon vorhanden ist. das funktioniert aber nicht, weil er mir sonst immer das element hinzufügt wenn die strings nicht gleich sind!

hoffe ihr wisst was ich meine, danke schon mal


----------



## nrg (10. Mrz 2011)

wie wärs mit einem set? 

Set (Java Platform SE 6)



> A collection that contains no duplicate elements.


----------



## bone2 (10. Mrz 2011)

nimm dir eine boolean hilfsvariable und setze sie false sobald er etwas doppelt findet. wenn er durch ist, ein if und dann einmal reinschreiben oder eben nicht

einfacher:

```
List<String> tada = new ArrayList<String>();
        String a = new String("toast");
        tada.add(a);
        System.out.println(tada);
        String b = new String("toast");
        System.out.println(a == b);
        System.out.println(a.equals(b));
        System.out.println(tada.contains(new String("toast")));
```


----------



## xehpuk (10. Mrz 2011)

Gibt false zurück, wenn das Element bereits drin war:

```
List<String> elements;

boolean add(String element) {
	if (elements.contains(element))
		return false;
	elements.add(element);
	return true;
}
```
Hier mit implizitem und explizitem Iterator (aber nicht besonders sinnvoll):

```
boolean foreachAdd(String element) {
	for (String current : elements) {
		if (current.equals(element))
			return false;
	}
	elements.add(element);
	return true;
}
```


```
boolean iteratorAdd(String element) {
	final Iterator<String> iterator = elements.iterator();
	while (iterator.hasNext()) {
		if (iterator.next().equals(element))
			return false;
	}
	elements.add(element);
	return true;
}
```


----------



## shark95 (10. Mrz 2011)

super, perfekt!

Danke für die schnellen Antworten


----------

