Ho una ArrayList<String>
, e voglio rimuovere le stringhe ripetute da essa. Come posso farlo?
Se non vuoi duplicati in una Collection
, dovresti considerare perché stai usando una Collection
che permette i duplicati. Il modo più semplice per rimuovere gli elementi ripetuti è quello di aggiungere il contenuto ad un Set
(che non permetterà duplicati) e poi aggiungere il Set
di nuovo alla ArrayList
:
Set<String> set = new HashSet<>(yourList);
yourList.clear();
yourList.addAll(set);
Naturalmente, questo distrugge l'ordine degli elementi nella ArrayList
.
Anche se la conversione della ArrayList
in un HashSet
rimuove efficacemente i duplicati, se avete bisogno di preservare l'ordine di inserimento, vi suggerisco piuttosto di usare questa variante
// list is some List of Strings
Set<String> s = new LinkedHashSet<>(list);
Poi, se avete bisogno di recuperare un riferimento ad una List
, potete usare di nuovo il costruttore di conversione.
Se non volete duplicati, usate un Set invece di una List
. Per convertire una List
in un Set
puoi usare il seguente codice:
// list is some List of Strings
Set<String> s = new HashSet<String>(list);
Se proprio necessario, potete usare la stessa costruzione per convertire un Set
in una List
.