J'ai 2 fichiers texte avec des données. Je lis ces fichiers avec BufferReader
et mets les données d'une colonne par fichier dans un List<String>
.
J'ai dupliqué des données dans chacune d'elles, mais je dois disposer de données uniques dans la première List
pour pouvoir confronter les données dupliquées dans la seconde List
.
Comment puis-je obtenir des valeurs uniques d'une List
?
Cela peut être fait une ligne en utilisant une Set
intermédiaire:
List<String> list = new ArrayList<>(new HashSet<>(list));
En Java 8, utilisez distinct()
sur un flux:
List<String> list = list.stream().distinct().collect(Collectors.toList());
Sinon, n'utilisez pas de liste du tout; il suffit d'utiliser un ensemble (comme HashSet) dès le début pour la collection pour laquelle vous souhaitez uniquement conserver des valeurs uniques.
Convertissez la ArrayList
en HashSet
.
List<String> listWithDuplicates; // Your list containing duplicates
Set<String> setWithUniqueValues = new HashSet<>(listWithDuplicates);
Si, pour une raison quelconque, vous souhaitez reconvertir le jeu en liste ultérieurement, vous pouvez le faire, mais le plus souvent, cela ne sera pas nécessaire.
List<String> listWithUniqueValues = new ArrayList<>(setWithUniqueValues);
En Java 8 :
// List with duplicates
List<String> listAll = Arrays.asList("A", "A", "B", "C", "D", "D");
// filter the distinct
List<String> distinctList = listAll.stream()
.distinct()
.collect(Collectors.toList());
System.out.println(distinctList);// prints out: [A, B, C, D]
cela fonctionnera également avec des objets, mais vous devrez probablement adapter votre méthode equals.
je viens de me rendre compte qu'une solution peut être utile pour d'autres personnes. sera tout d'abord rempli avec les valeurs dupliquées de BufferReader.
ArrayList<String> first = new ArrayList<String>();
Pour extraire des valeurs uniques, je viens de créer une nouvelle ArrayList comme down:
ArrayList<String> otherList = new ArrayList<>();
for(String s : first) {
if(!otherList.contains(s))
otherList.add(s);
}
Beaucoup de personnes postées sur Internet parlent d’assigner mon Arraylist à une liste, un ensemble, un tableau de hachage ou un TreeSet. ] Merci pour votre temps les gars.