J'ai besoin de trouver des éléments en double dans la collection et de les mettre dans un tableau.
J'ai écrit cette méthode:
JaVa MaMa Mama
J'ai cette collection: p >
List<String> duplicates = new ArrayList<>(); Collections.addAll(duplicates, "java", "JaVa", "mm", "Mama", "ss", "MaMa");
Mais lorsque j'affiche le résultat à l'écran, j'obtiens cette réponse.
String[] mass = new String[(int) limit]; for (int i = 0; i < duplicates.size(); i++){ for (int j = 1; j < duplicates.size(); j++){ if (i != j && duplicates.get(i).equalsIgnoreCase(duplicates.get(j))){ mass[j - 1] = duplicates.get(j); } }
Qu'est-ce que j'ai manqué? p >
3 Réponses :
Je ne veux pas le donner, car il semble que vous apprenez. Astuce: vous pouvez (et peut-être devriez-vous, pour la pratique) accomplir cette tâche avec une boucle. Pas besoin d'utiliser une boucle imbriquée. Gardez à l'esprit que vous pouvez raccourcir une boucle en utilisant duplicates.size () - 1.
Quelques petites choses, la boucle interne a juste besoin d'être tournée vers l'avenir pour que j
puisse commencer à i + 1
et à cause de cela, la boucle externe se termine à i
masse
, vous avez besoin d'un compteur séparé pour ce int k = 0;
for (int i = 0; i < duplicates.size() -1; i++){
for (int j = i + 1; j < duplicates.size(); j++){
if (duplicates.get(i).equalsIgnoreCase(duplicates.get(j))){
mass[k] = duplicates.get(i);
k++;
}
}
}
Si vous souhaitez faire cela en utilisant les flux java-8
List
dans la Map
, avec la clé comme String
et les valeurs sont Long
count of occurrence
String[] array = duplicates.stream().map(String::toLowerCase) .collect(Collectors.groupingBy(Function.identity(),Collectors.counting())) .entrySet().stream().filter(entry->entry.getValue()>1).map(Map.Entry::getKey).toArray(String[]::new); System.out.println(Arrays.toString(array)); //[java, mama]
String
, le code ci-dessous montre la combinaison des deux Map<String, Long> result = duplicates.stream().map(String::toLowerCase) .collect(Collectors.groupingBy(Function.identity(),Collectors.counting())); System.out.println(result); //{ss=1, mm=1, java=2, mama=2}
C'est génial, mais comment peut-il être collecté dans List
mais pourquoi avez-vous besoin de List
? et sur quelle base? @Mefisto_Fell
lequel List
ou Array
? @Mefisto_Fell
Premier avec liste
Que contient la liste des
mots
?Sa liste de doublons
Si la liste s'est produite plusieurs fois, vous voulez la collecter dans le tableau @ Mefisto_Fell?