Je lis les données d'un fichier texte, il peut donc y avoir:
John Mary John Leeds
J'ai maintenant besoin d'obtenir 3 éléments uniques dans ArrayList, car il n'y a que 3 valeurs uniques dans la sortie du fichier (comme ci-dessus).
Je peux utiliser un HashTable et y ajouter des informations, puis simplement copier ses données dans la liste. Y a-t-il d'autres solutions?
Pourquoi avez-vous besoin de le stocker dans un List
? Avez-vous réellement besoin de commander les données ou de prendre en charge les recherches basées sur un index?
Je suggère de stocker les données dans un Set
. Si la commande n'est pas importante, vous devez utiliser HashSet
. Cependant, si vous souhaitez conserver la commande, vous pouvez utiliser LinkedHashSet
.
Si vous avez un List
contenant des doublons et que vous voulez un List
sans, vous pouvez faire:
List<String> newList = new ArrayList<String>(new HashSet<String>(oldList));
Autrement dit, encapsulez l'ancienne liste dans un ensemble pour supprimer les doublons et encapsulez à nouveau cet ensemble dans une liste.
Vous pouvez vérifier list.contains () avant d'ajouter.
if(!list.contains(value)) {
list.add(value);
}
J'ai deviné que ce serait évident! Cependant, ajouter des éléments à un HashSet puis créer une liste à partir de cet ensemble serait plus efficace.
Utilisez un set
au lieu d'une liste. Jetez un oeil ici: Tutoriels sur les collections Java et spécifiquement sur les ensembles ici: Tutoriel sur les ensembles Java
En un mot, les ensembles contiennent quelque chose. Parfait :)
Voici comment je l'ai résolu:
import groovy.io.*;
def arr = ["5", "5", "7", "6", "7", "8", "0"]
List<String> uniqueList = new ArrayList<String>(new HashSet<String>( arr.asList() ));
System.out.println( uniqueList )