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); }