Ich habe eine ArrayList<String>
, und ich möchte wiederholte Strings aus ihr entfernen. Wie kann ich das tun?
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<String> set = new HashSet<>(yourList);
yourList.clear();
yourList.addAll(set);
Natürlich wird dadurch die Reihenfolge der Elemente in der ArrayList
zerstört.
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<String> s = new LinkedHashSet<>(list);
Wenn Sie dann eine List
-Referenz zurückbekommen müssen, können Sie wieder den Konvertierungskonstruktor verwenden.
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<String> s = new HashSet<String>(list);
Wenn es wirklich nötig ist, kannst du die gleiche Konstruktion verwenden, um ein "Set" wieder in eine "Liste" zu verwandeln.