HashMap
HashMapはMapインターフェースを実装したクラスで、値の挿入順を保持しません。
getすると、順不同で値が返ります。但し、Mapインターフェースを実装したクラスのうち処理が高速です。

以下サンプルです。

import java.util.Iterator;
import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
        Map map = new HashMap();
        map.put("key1","test1");
        map.put("key2","test2");
        map.put("key3","test3");
        
        StringBuffer buf = new StringBuffer();
        
        for (Iterator itr = map.keySet().iterator();itr.hasNext();){
            String key   = (String)itr.next();
            String value = (String)map.get(key);
            System.out.println(key +" = " + value);
        }
    }
}
実行結果は以下のようになります。

key1 = test1
key3 = test3
key2 = test2
キーが重複した場合
同じキーがputされた場合、上書きされます。
putする時に既に同じキーが存在するかどうかはcontainsKey()メソッドで判断できます。
以下サンプルです。

import java.util.HashMap;
import java.util.Map;


public class Test {
    public static void main(String[] args) {
        Map map = new HashMap();
        map.put("test","a");
        map.put("test","b");
        if(map.containsKey("test")){
            System.out.println(map.get("test"));
        }
    }
}
結果は以下のようになります。

b
Java5からの記述方法
Java5からはMapの記述方法が変わっています。
プログラマーのミスを防ぐためにパラメータの型を明確に記述するように変更されています。

例えばkeyがString型で、valueがBigDecimal型の場合、以下のように記述します。

Map<String,BigDecimal> = new HashMap<String,BigDecimal>();
このようにインスタンス生成時に型指定する機能をジェネリックスというようです。

Back to top

Information