こんにちは。くまごろーです。
今日は先日の記事に続いて、Javaのコレクションの1つ「Map」についてまとめようと思います。
1 Mapとは?
Mapとは、2つの情報をキー(key)と値(value)のペアとして格納するデータ構造。格納した値はキーを指定して読み書きできる。キーの重複は不可になっている。
Mapには、以下の様なクラスがある。
(1)HashMapクラス
Mapインターフェースの中で最も利用されるクラス。TreeMapと比べて以下の特徴がある。
・null:扱える
・自動ソート:なし(格納した順番そのまま)
(2)TreeMapクラス
基本的にHashMapクラスと同じだが、以下の点においてHashMapと異なっている。
・null:扱えない
・自動ソート:あり(キーによって自動的にソートされる)
2 HashMapクラスについて
Mapインターフェースの中でよく使用されるクラス。
(1)HashMapをインスタンス化する
Map<キーの型, 値の型> マップ変数 = new HashMap<キーの型, 値の型>();
(2)HashMapの持つメソッド
メソッド | 意味 | 戻り値 |
---|---|---|
<要素格納> | ||
put(キー,値) | Mapにキーと値のペアを格納 | 値 |
<要素取り出し> | ||
get(キー) | キー値に対応する値を取得(なければnullを返す) | 値 |
<マップの調査> | ||
size() | 格納されているペア数を返す | int |
isEmpty() | 要素数がゼロであるかを判定 | boolean |
containsKey(キー) | 指定データがキーに含まれているか判定 | boolean |
containsValue(値) | 指定データが値に含まれているか判定 | boolean |
<要素を削除> | ||
clear() | 要素をすべて削除する | void |
remove(キー) | 指定した内容の要素を削除 | 値 |
<その他> | ||
keySet() | 格納されているキーの一覧を返す | Set<キー> |
(3)要素の取り出しについて
Mapの要素を一つ一つ取り出す場合、通常の拡張for文で取り出そうとするとエラーが発生する。
<Mapの要素を順に取り出す>
for(キーの型 key: マップ変数.keySet()) { 値の型 value = マップ変数.get(key); //キーを指定して値を取得 //何らかの処理 }
<例>
Map<Integer, String> members = new HashMap<Integer, String>(); members.put(0, "ピカチュウ"); members.put(1, "フシギダネ"); members.put(2, "ヒトカゲ"); members.put(3, "ゼニガメ"); for(Integer key : members.keySer()) { String value = members.get(key); System.out.println(value); }
3 参考