JavaのMapについて

投稿者: | 2011年3月2日

JavaのMapには以下の種類がある。

ConcurrentHashMap 取得の完全な同時性および予想される調整可能な更新並行性をサポートするハッシュテーブル。
ConcurrentSkipListMap スケーラブルな平行ConcurrentNavigableMap。
EnumMap enum型のキーで使用するための特殊なMap実装。
HashMap Mapインターフェースのハッシュテーブルに基づく実装。
IdentityHashMap キーと値を比較する時にオブジェクトの同一性の代わりにリファレンスの同一性を使用して、ハッシュテーブルを持つ Map インスタンスを実装したクラス。
TreeMap Red-Black ツリーに基づく NavigableMap 実装。
WeakHashMap ハッシュテーブルに基づいた「弱キー」による Map 実装

(※文言はjavadocより)

正直、今の段階ではどんなときに使うのかが分からないものもある。
(ConcurrentのMapとか・・どうやって使うんだろう。。)
これらのMapの中で、一番良く使いそうなのはHashMapかTreeMapといったところだろうか。

以下に、TreeMapの簡単な使用例をあげておく。

// Mapコレクションの使い方
Map<Integer,String> map = new TreeMap<Integer,String>();

map.put(1,"hoge");
map.put(1,"foo");  // 同じ要素がある時は上書き
map.put(8,"bar");
map.put(3,"piyo"); // TreeMapでは並べ替えられる

// 要素を全て表示
for(Entry<Integer,String> entry:map.entrySet()){
    System.out.printf("%d %s\n", entry.getKey(), entry.getValue() );
}

実行結果は

1 foo
3 piyo
8 bar

となる。

C#やC++のコレクションと基本的には同じなのだが、
細かい書き方が違うのでややこしいと思う。
一つ一つ覚えていくしかない。。。

カテゴリー: Java

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です