#目次
1.Mapの初期化編
2.Mapに要素を追加する編
3.Mapから要素を取り出す編
4.Mapの中身を確認する編
5.さいごに
#1. Mapの初期化編
① Map<キーの型, 値の型> Map名 = new HashMap<>() で初期化
※型はクラス型のデータ型(String、Integer、Longなど)を指定する必要があるので注意。
Map<Integer, String> fishNameMap = new HashMap<>();
キーと値が詰まっていくイメージはこちら。
キー | 値 |
---|---|
1 | かつお |
2 | さんま |
3 | あじ |
##② Mapの値にはリストを設定することも可能
Map<Integer, List<String>> fishNameMap = new HashMap<>();
キーと値が詰まっていくイメージはこちら。
キー | 値 |
---|---|
1 | かつお名前リスト |
2 | さんま名前リスト |
3 | あじ名前リスト |
#2. Mapに要素を追加する編
##① Map名.put(キー, 値) で値を詰める
※重複するキーで値を追加すると上書きされるので注意。
// Map初期化
Map<Integer, String> fishNameMap = new HashMap<>();
// 値を詰める
fishNameMap.put(1, "かつお");
fishNameMap.put(2, "さんま");
fishNameMap.put(3, "あじ");
fishNameMapの状態。
キー | 値 |
---|---|
1 | かつお |
2 | さんま |
3 | あじ |
##② 値がリストの場合は下記の様に追加
// Map初期化
Map<Integer, List<String>> fishNameMap = new HashMap<>();
// List初期化
List<String> katsuoNameList = new ArrayList<String>();
// Listに値を詰める
katsuoNameList.add("鰹");
katsuoNameList.add("カツオ");
// 値を詰める
fishNameMap.put(1, katsuoNameList);
fishNameMapの状態。
キー | 値 |
---|---|
1 | かつお名前リスト |
katsuoNameListの状態。
かつお名前リスト |
---|
鰹 |
カツオ |
さんま、あじの情報を追加したものはこちら。
Map<Integer, List<String>> fishNameMap = new HashMap<>();
// かつお
List<String> katsuoInfoList = new ArrayList<String>();
katsuoInfoList.add("鰹");
katsuoInfoList.add("カツオ");
// さんま
List<String> sanmaInfoList = new ArrayList<String>();
sanmaInfoList.add("秋刀魚");
sanmaInfoList.add("サンマ");
// あじ
List<String> aziInfoList = new ArrayList<String>();
aziInfoList.add("鯵");
aziInfoList.add("アジ");
fishNameMap.put(1, katsuoInfoList);
fishNameMap.put(2, sanmaInfoList);
fishNameMap.put(3, aziInfoList);
キー | 値 |
---|---|
1 | かつお名前リスト |
2 | さんま名前リスト |
3 | あじ名前リスト |
#3. Mapから要素を取り出す編
##① キーで値を取得
Map名.get(キー) で取得できる。
下記例では "かつお" が取得できる。
Map<Integer, String> fishNameMap = new HashMap<>();
fishNameMap.put(1, "かつお");
fishNameMap.put(2, "さんま");
fishNameMap.put(3, "あじ");
// キーで値を取得
fishNameMap.get(1);
##② キーをすべて取得
Map名.keySet() で取得できる。
下記例では 1、2、3 が取得できる。
Map<Integer, String> fishNameMap = new HashMap<>();
fishNameMap.put(1, "かつお");
fishNameMap.put(2, "さんま");
fishNameMap.put(3, "あじ");
// キーをすべて取得
fishNameMap.keySet();
上記で取得したすべてのキーを使用する方法の例。
Mapから取得したすべてのキーを、新たなリストに詰める。
Map<Integer, String> fishNameMap = new HashMap<>();
fishNameMap.put(1, "かつお");
fishNameMap.put(2, "さんま");
fishNameMap.put(3, "あじ");
// 新たなリスト「キーリスト」を用意
List<String> keyList = new ArrayList<String>();
// 拡張for文でぐるぐる回して、取得したすべてのキーを取り出す。
for (Integer key : fishNameMap.keySet()) {
keyList.add(key);
}
キーリストの状態。
##③ 値をすべて取得
Map名.values() で取得できる。
下記例では "かつお"、"さんま"、"あじ" が取得できる。
Map<Integer, String> fishNameMap = new HashMap<>();
fishNameMap.put(1, "かつお");
fishNameMap.put(2, "さんま");
fishNameMap.put(3, "あじ");
// 値をすべて取得
fishNameMap.values();
上記で取得したすべての値を使用する方法の例。
Mapから取得したすべての値を、新たなリストに詰める。
Map<Integer, String> fishNameMap = new HashMap<>();
fishNameMap.put(1, "かつお");
fishNameMap.put(2, "さんま");
fishNameMap.put(3, "あじ");
// 新たなリスト「値リスト」を用意
List<String> valueList = new ArrayList<String>();
// 拡張for文でぐるぐる回して、取得したすべての値を取り出す。
for (String value : fishNameMap.values()) {
valueList.add(value);
}
値リストの状態。
値リスト |
---|
かつお |
さんま |
あじ |
##④ 値がリストの場合の値取得&使用例
今回は、Mapからリストを取得し、そのリストの要素を新たなリストに詰める例です。
//--------------------- Mapの作成 --------------------------
// Mapを用意
Map<Integer, List<String>> fishNameMap = new HashMap<>();
// Map設定用リストを用意
List<String> katsuoNameList = new ArrayList<String>();
katsuoNameList.add("鰹");
katsuoNameList.add("カツオ");
// 上記リストをMap追加
fishNameMap.put(1, katsuoNameList);
//------------------- 新たなリストの作成 ---------------------
// 新たなリストを用意。
List<String> newKatsuoNameList = new ArrayList<String>();
// キーでMapから値(リスト)を取得、それを新たなリストに詰める。
newKatsuoNameList.addAll(fishNameMap.get(1));
新たなリスト(newKatsuoNameList)の状態。
newKatsuoNameList |
---|
鰹 |
カツオ |
##⑤ キーと値のセットをすべて取得
Map名.entrySet() で取得できる。
エントリーとはMapのキーと値のペアのこと。
Map<Integer, String> fishNameMap = new HashMap<>();
fishNameMap.put(1, "かつお");
fishNameMap.put(2, "さんま");
fishNameMap.put(3, "あじ");
// エントリー(キーと値のペア)をすべて取得
fishNameMap.entrySet();
上記で取得したすべてのエントリー(キーと値のセット)を使用する方法の例。
今回は拡張for文を使用してすべてのキーと値を取り出す方法を記載。
Map<Integer, String> fishNameMap = new HashMap<>();
fishNameMap.put(1, "かつお");
fishNameMap.put(2, "さんま");
fishNameMap.put(3, "あじ");
// 拡張for文でぐるぐる回して、取得したエントリーからすべてのキーと値を取り出す。
for (Entry<Integer, String> mapEntry : fishNameMap.entrySet()) {
// キーを取得
String value = mapEntry.getKey();
// 値を取得
String value = mapEntry.getValue();
}
型はEntryのように定義し、変数名はエントリーだということを明示するのが望ましい。
エントリーからのキーの取得は、mapEntry.getKey();
値の取得は、mapEntry.getValue(); で取得できる。
#4. Mapの中身を確認する編
##① 指定したキーの存在確認
Map名.containsKey(検索したいキー) で確認できる。
存在する場合はtrueが、存在しない場合はfalseが返る。
そのため下記例ではtrueが返る。
Map<Integer, String> fishNameMap = new HashMap<>();
fishNameMap.put(1, "かつお");
fishNameMap.put(2, "さんま");
fishNameMap.put(3, "あじ");
// 指定したキーの存在確認
fishNameMap.containsKey(2);
##② 指定した値の存在確認
Map名.containsKey(検索したいキー) で確認できる。
存在する場合はtrueが、存在しない場合はfalseが返る。
そのため下記例でもtrueが返る。
Map<Integer, String> fishNameMap = new HashMap<>();
fishNameMap.put(1, "かつお");
fishNameMap.put(2, "さんま");
fishNameMap.put(3, "あじ");
// 指定した値の存在確認
fishNameMap.containsValue("あじ");
#5. さいごに
ここまで読んでいただきありがとうございます!
現場で実装を行っていた際にMapの理解が不足していると感じたため、
主に現場で使用したMapの使い方を今回まとめてみました。
自分の記録が誰かのお役に立てると嬉しいです。。