Come rimuovo gli elementi ripetuti da ArrayList?

Ho una ArrayList<String>, e voglio rimuovere le stringhe ripetute da essa. Come posso farlo?

Soluzione

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 set = new HashSet(yourList);
yourList.clear();
yourList.addAll(set);

Naturalmente, questo distrugge l'ordine degli elementi nella ArrayList.

Commentari (16)

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 s = new LinkedHashSet(list);

Poi, se avete bisogno di recuperare un riferimento ad una List, potete usare di nuovo il costruttore di conversione.

Commentari (5)

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 s = new HashSet(list);

Se proprio necessario, potete usare la stessa costruzione per convertire un Set in una List.

Commentari (2)