Using HashMap to count instances
equals, hashcode, hashmap, java
Solution
Yes you are doing it correct way. HashMap replaces values if same key is provided.
From Java doc of `HashMap#put`
Associates the specified value with the specified key in this map. If the map previously contained a mapping for the key, the old value is replaced.
Problem
I have the following code to count the instances of different strings in an array; ``` 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); } ``` Is this a correct way of doing it? It seems a bit long-winded for a simple task. The `HashMap` result is useful to me because I will be indexing it by the string. I am worried that the line ``` else wordCounts.put(w, i + 1); ``` could be inserting a second `key-value` pair due to the fact that ``` new Integer(i).equals(new Integer(i + 1)); ``` would be false, so two `Integers` would end up under the same `String` key bucket, right? Or have I just over-thought myself into a corner?