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?