3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

現場で使用したMapの使い方メモ

Last updated at Posted at 2021-10-27

#目次
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);
}
キーリストの状態。
| キーリスト| | :-: | | 1 | | 2 | | 3 |

##③ 値をすべて取得
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の使い方を今回まとめてみました。
自分の記録が誰かのお役に立てると嬉しいです。。

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?