J'ai une ArrayList<String>
, et je veux en retirer les chaînes répétées. Comment puis-je faire cela ?
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<String> set = new HashSet<>(yourList);
yourList.clear();
yourList.addAll(set);
Bien sûr, cela détruit l'ordre des éléments dans la ArrayList
.
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<String> 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.
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<String> s = new HashSet<String>(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