key が String, value が Integer の例。 Integer は定数で値を変更できないため、値を増やすときには int にする。 この変換は JDK 1.5 以降では自動で行われる。
標準入力(通常キーボード)から入力された単語列(空白区切り)を対象として、 各単語の出現回数を数える。
import java.util.HashMap;
import java.util.Scanner;
import java.util.Iterator;
class WordCounter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
HashMap<String, Integer> termMap = new HashMap<String, Integer>();
while(scanner.hasNext()) {
String term = scanner.next();
// 単語の出現回数を1増やす
int count = 1;
if(termMap.containsKey(term)){
count += termMap.get(term);
}
termMap.put(term, count);
}
// 単語数の表示 (ソートはせず)
Iterator<String> iterator = termMap.keySet().iterator();
while(iterator.hasNext()) {
String key = iterator.next();
Integer value = termMap.get(key);
System.out.println(key + ": " + value);
}
}
}
JDK 1.5 以降でも動作するが、その場合には前掲のコードを推奨する。
import java.util.HashMap;
HashMap termMap = new HashMap();
String term;
...
(termにカウントしたい文字列を入れる)
...
// 単語の出現回数を1増やす
int count = 1;
if(termMap.containsKey(term)){
count += ((Integer)termMap.get(term)).intValue();
}
termMap.put(term, new Integer(count));
...
// 単語数の表示
Iterator iterator = termMap.keySet().iterator();
while(iterator.hasNext()) {
String key = (String)iterator.next();
Integer value = (Integer)termMap.get(key);
System.out.println(key + ": " + value);
}