配列内のさまざまな文字列のインスタンスをカウントする次のコードがあります。
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);
}
これは正しい方法ですか?単純なタスクには少し時間がかかるようです。HashMap
文字列でインデックスを作成するので、結果は役に立ちます。
ラインが気になる
else wordCounts.put(w, i + 1);
key-value
という事実により、2 番目のペアが挿入される可能性があります。
new Integer(i).equals(new Integer(i + 1));
は false になるので、2 つIntegers
が同じString
キー バケットの下にあることになりますよね? それとも、自分を隅に追いやっただけですか?