Comment supprimer les éléments répétés de ArrayList ?

J'ai une ArrayList<String>, et je veux en retirer les chaînes répétées. Comment puis-je faire cela ?

Solution

Si vous ne voulez pas de doublons dans une Collection, vous devriez vous demander pourquoi vous utilisez une Collection qui autorise les doublons. Le moyen le plus simple de supprimer les éléments répétés est d'ajouter le contenu à un Set (qui n'autorisera pas les doublons), puis d'ajouter à nouveau le Set à la ArrayList :

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

Bien sûr, cela détruit l'ordre des éléments dans la ArrayList.

Commentaires (16)

Bien que la conversion de ArrayList en HashSet supprime efficacement les doublons, si vous devez préserver l'ordre d'insertion, je vous suggère plutôt d'utiliser cette variante

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

Ensuite, si vous avez besoin de récupérer une référence List, vous pouvez utiliser à nouveau le constructeur de conversion.

Commentaires (5)

Si vous ne voulez pas de doublons, utilisez un [Set][1] au lieu d'une List. Pour convertir une List en Set, vous pouvez utiliser le code suivant :

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

Si cela est vraiment nécessaire, vous pouvez utiliser la même construction pour reconvertir un Set en List.

[1] : http://java.sun.com/javase/6/docs/api/java/util/Set.html

Commentaires (2)