バックエンド

【Java】Mapをループさせてみよう!

map-loop
野田竣介

今回はこのような質問をいただきました。

Mapをループさせて値を取得したい!

よく使うMapですがループさせるのって少し難しいですよね。

そこで今回はこちらの質問について解説していきます!

Mapって何?

Mapはキー(key)と値(value)で構成されています。

連想配列と同じイメージですね。

値に対するキーが設定されているので、そのキーを指定して値を取得するのが基本です。

Mapをループさせてみよう!

今回は1つずつ値を取得するのではなく、Mapに格納されているすべてのkeyとvalueを取得してみます。

Mapのキーと値はString型に限らず、すべての型を使えます。

汎用性が高く、非常に使いやすいです。

今回、例として使うMapはキー、値ともにString型です。

Mapの定義

例として、キーが英語、値が日本語のMapを作ってループさせてみたいと思います。

Mapの初期化は基本的にはnew HashMap<>()を使います。

Map<String, String> map = new HashMap<>();
map.put("apple", "りんご");
map.put("strawberry", "いちご");
map.put("grape", "ぶどう");

拡張for文を使ったループ

まずは拡張for文を使ったパターン。

keySet()でキーの配列を取得し、そのキーをループさせて値を取得します。

for (String key : map.keySet()) {
    System.out.println(key + " は " + map.get(key) + " です");
}
apple は りんご です
strawberry は いちご です
grape は ぶどう です

ラムダを使ったループ

次はラムダを使ったパターン。

この場合、1行で済むのが良いですね。

あと、わざわざvalueを取得する必要がないのでわかりやすい。

map.forEach((key, value) -> System.out.println(key + " は " + value + " です"));
apple は りんご です
strawberry は いちご です
grape は ぶどう です

まとめ

拡張for文を使う場合はこんな感じ。

for (String key : map.keySet()) {
    System.out.println(key + " は " + map.get(key) + " です");
}

ラムダを使う場合はこんな感じ。

map.forEach((key, value) -> System.out.println(key + " は " + value + " です"));

ラムダのほうがシンプルですね!

あとがき

ラムダを使ったほうが読みやすい上に扱いやすいですね。

Mapをループさせる場合はラムダを使うのをおすすめします!

Mapは非常に便利なので使う場面も多いかと思います。

もしループさせる必要があれば使ってみてください!

記事URLをコピーしました