Java compter l'apparition de chaque élément dans un tableau
Est-il une méthode pour compter de la survenance de chaque élément dans un tableau?
Permet de dire que j'ai:
String[] array = {"name1","name2","name3","name4", "name5"};
Ici, la sortie sera:
name1 1
name2 1
name3 1
name4 1
name5 1
et si j'ai:
String[] array = {"name1","name1","name2","name2", "name2"};
La sortie serait:
name1 2
name2 3
La sortie est juste de démontrer le résultat attendu.
- Probablement pas, mais il devrait être assez simple pour vous de mettre en œuvre une méthode sur votre propre en considérant avec quelle facilité la tâche. Il va effectuer en O(n) peu importe ce que je pense de toute façon (à moins de faire des hypothèses sur le tri à l'augmentation de cette vitesse)
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un
MultiSet
de Google Collections/Goyave ou unSac
de Apache Commons.Si vous avez une collection au lieu d'un tableau, vous pouvez utiliser
addAll()
pour ajouter tout le contenu au-dessus de la structure de données, puis appliquer lecount()
méthode pour chaque valeur. UnSortedMultiSet
ouSortedBag
serait de vous donner les éléments dans un ordre défini.Google Collections a en fait très pratique façons de le faire à partir de baies d'un
SortedMultiset
.Avec java-8, vous pouvez le faire comme ceci:
De sortie:
Ce qu'il fait est:
Stream<String>
du tableau d'origineMap<String, List<String>>
Si vous voulez obtenir un
Map
qui contient le nombre d'occurrences de chaque mot, il peut être fait en faisant:Pour plus d'informations:
Stream
Collecteurs
Espère que cela aide! 🙂
Je voudrais utiliser une table de hachage avec clé prend l'élément du tableau (ici la chaîne) et de la valeur d'un Entier.
ensuite, parcourez la liste à faire quelque chose comme ceci :
hash.put(s, hash.get(s) + 1);
. Fairei++;
n'a pas de mise à jour de l'entier à l'intérieur de la table de hachage. Il y a aussi d'autres fautes de frappe.J'ai écrit une solution pour que cette pratique moi-même. Il ne semble pas presque aussi génial que les autres réponses postées, mais je vais le poster quand même, et puis apprendre comment faire cela en utilisant les autres méthodes. Profitez d':
À l'aide de table de hachage, il est une promenade dans le parc.
Il peut être fait d'une manière très simple à l'aide de collections
vous trouverez le code ci-dessous
Ici, la sortie sera comme
nom1 2
nom1 2
nom2 3
nom2 3
nom2 3
Afin d'éviter l'impression redondant utilisation des touches HashMap et obtenir votre sortie désirée
To avoid printing redundant keys use HashMap
Voici ma solution
La méthode prend un tableau d'entiers(en supposant que la gamme de 0 à 100) en entrée et renvoie le nombre d'occurrences de chaque élément.
disons-le d'entrée est
[21,34,43,21,21,21,45,65,65,76,76,76]
.Donc, la sortie serait dans une carte et c'est:
{34=1, 21=4, 65=2, 76=3, 43=1, 45=1}
Vous pouvez le faire à l'aide de Matrices.le tri et la Récursivité. Le même vin, mais dans une autre bouteille....
Vous pouvez utiliser Hachage de la Carte comme indiqué dans l'exemple ci-dessous:
Il existe plusieurs méthodes qui peuvent aider, mais c'est l'un est à l'aide de la boucle.
C'est un simple script que j'ai utilisé en Python, mais il peut être facilement adapté. Rien envie que.
vous pouvez trouver à l'aide de table de hachage avec une simple technique
//Répondre w/o à l'aide de Hashset ou de la carte ou de la liste de tableaux
Vous pouvez utiliser la table de hachage, où Key est votre chaîne et de la valeur - temps.