À l'aide de table de hachage pour compter les instances

J'ai le code suivant pour compter les occurrences des différentes chaînes dans un tableau;

String words[] = {"the","cat","in","the","hat"};
HashMap<String,Integer> wordCounts = new HashMap<String,Integer>(50,10);
for(String w : words) {
    Integer i = wordCounts.get(w);
    if(i == null) wordCounts.put(w, 1);
    else wordCounts.put(w, i + 1);
}

Est-ce une bonne façon de le faire? Il semble un peu longue haleine pour une tâche simple. Le HashMap résultat est utile pour moi parce que je vais être l'indexation par la chaîne.

Je suis inquiète de voir que la ligne

else wordCounts.put(w, i + 1);

pourrait être l'insertion d'un deuxième key-value paire en raison du fait que

new Integer(i).equals(new Integer(i + 1));

serait faux, de sorte que deux Integers finiront sous le même String clé seau, droit? Ou ai-je un peu plus pensé moi-même dans un coin?

  • Semble bien pour moi; c'est pourquoi je le ferais. L'essayer 😉
  • J'étais sur le point de, mais la pensée de la totalité de mon approche peut être pauvre, alors j'ai pensé que je jetterais sur ici.
  • Bon code doit utiliser Map<K, V> Interface.
InformationsquelleAutor lynks | 2012-10-31