JavaのHashMapを調べてみた
JavaのHashMapの使い方がアレなので少し調べてみた。
import java.util.*; class sample { public static void main(String[] args){ HashMap<String,String> hm = new HashMap<String,String>(); hm.put("sample","message"); String a = hm.get("sample"); } }
import java.util.HashMap; class sample { public static void main(String[] args){ HashMap hm = new HashMap(); hm.put("sample","message"); String s = (String)hm.get("sample"); } }
に書き変わってる。
なるほど、Generic実装って要はコンパイラが面倒見てるのね、、、。
ついでに、put と get について見てみる。
ポインタ比較には思えないし、単純な実体比較だと速度的にアレでしょ、、、、
で、見つけた結果は以下のような感じ。
- 基本的にObjectクラスの hashCode() 関数を使って、帰ってきた整数で内部配列への入出力を行う。
- hashCode() の一致を取った後、equals(Object obj) で一致確認を取る。
実体比較は最小限にしてるわけね、、、
因みに、hashCode() は String ではオーバーライドしてた。
APIリファレンスに載ってるし、暇なら見てみると良いかも?