Map構造は、キーと値をセットにしたものを1つの要素として管理するデータ構造です。
Mapについて
Mapは要素にキーを関連付けて管理したい場合に使用します。
要素は他の要素と重複しても構いませんが、キーは重複できません。
Mapの実装クラス
主要なMap系の実装クラスには以下のようなクラスがあります。
実装クラス | 特徴 |
---|---|
java.util.HashMap | 格納順は管理しない。 キーと値にnull値を使用可。 |
java.util.TreeMap | キーによって自動的にソートして管理する。 キーと値にnull値は使用不可。 |
java.util.LinkedHashMap | HashMapに二重リンクリストを追加したもの |
java.util.Hashtable | 基本的にHashMapと同じ機能であるが、スレッドセーフである点が異なる。 また、比較的古いAPIのため利用は推奨されない。 (スレッドセーフにしたい場合はConcurrentHashMapの使用が推奨される) |
Map系実装クラスの比較
Map系クラスの特徴をまとめると以下のようになります。
HashMap | TreeMap | LinkedHashMap | Hashtable | |
---|---|---|---|---|
キーの重複 | ✕ | ✕ | ✕ | ✕ |
null値のキー | ◯ | ✕ | ◯ | ✕ |
要素の重複 | ◯ | 〇 | ◯ | 〇 |
null値の要素 | ◯ | 〇 | ◯ | ✕ |
自動ソート | ✕ | ◯ | ✕ | ✕ |
スレッドセーフ | ✕ | ✕ | ✕ | ◯ |
コメント