2008/04/25

Mapの実装クラスについて [ Java ]

昨日のエントリでMapについて書いた訳ですが、JavaのMapは
インターフェースなので使う時は実装クラスを使わないといけません。

これが結構色々種類があって、それを全部説明する僕が面倒です
ので幾つかピックアップして解説してみようと思います。
という訳で選手入場です!


1.HashMap
はい、トップバッターは一番使われてるのでは? と僕が思っている
ハッシュマップから。これはほんとごくごく普通の連想配列です。
あえて突っ込むとしたらば、同期化はされてない事とnullが許容
されているって事ぐらいでしょうか。あ、後このクラスはMapの
順序が保証されません。
順番とかどうでも良い、本当にハッシュテーブルが欲しい時は
これで事足りますね。

2.LinkedHashMap
さぁ二番手に行ってみましょう。今度のMapは1番のHashMapと
ほぼ同じです。相違点は挿入した順序を保持する事。
つい最近仕事で使ったので記憶に新しい……

3.TreeMap
今日はこれで最後、TreeMapです。これはMapがソートされた
状態で保持されます。何でソートされるかというと勿論Key値です。
ハッシュでソートされるという事ですね。で、これってどういう風に
ソートされるの? 昇順? 降順? という疑問が沸くと思うのですが
デフォルトは昇順です。正確に言うとComparableインターフェースの
compareToメソッドによってソートされます。
その為、TreeMapを使って自分の思うようにMapをソートしたい場合は
Comparatorオブジェクトを生成し、それをTreeMapのコンストラクタへ
セットすれば出来るはずです。

なんではず、なのかって? 試してないからです。

今度はここらへんを実際のコードを混ぜて書きたいですねー。

0 件のコメント: