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