Wie kann ich wiederholte Elemente aus ArrayList entfernen?

Ich habe eine ArrayList<String>, und ich möchte wiederholte Strings aus ihr entfernen. Wie kann ich das tun?

Lösung

Wenn Sie keine Duplikate in einer Collection haben wollen, sollten Sie überlegen, warum Sie eine Collection verwenden, die Duplikate zulässt. Der einfachste Weg, wiederholte Elemente zu entfernen, ist, den Inhalt zu einem Set hinzuzufügen (das keine Duplikate zulässt) und dann das Set wieder zur ArrayList hinzuzufügen:

Set set = new HashSet(yourList);
yourList.clear();
yourList.addAll(set);

Natürlich wird dadurch die Reihenfolge der Elemente in der ArrayList zerstört.

Kommentare (16)

Obwohl die Konvertierung der ArrayList in ein HashSet effektiv Duplikate entfernt, wenn Sie die Einfügereihenfolge beibehalten müssen, würde ich Ihnen eher diese Variante empfehlen

// list is some List of Strings
Set s = new LinkedHashSet(list);

Wenn Sie dann eine List-Referenz zurückbekommen müssen, können Sie wieder den Konvertierungskonstruktor verwenden.

Kommentare (5)

Wenn Sie keine Duplikate wollen, verwenden Sie ein Set anstelle einer List. Um eine "Liste" in ein "Set" umzuwandeln, können Sie den folgenden Code verwenden:

// list is some List of Strings
Set s = new HashSet(list);

Wenn es wirklich nötig ist, kannst du die gleiche Konstruktion verwenden, um ein "Set" wieder in eine "Liste" zu verwandeln.

Kommentare (2)