バックエンド

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

map-loop

こんばんは!光です。

大手グローバル企業でWebエンジニアをやっています。

Webエンジニアを目指してプログラミングを勉強している初心者の方向けに情報を発信しています。

経歴や実績はこちら

システム開発のお仕事の依頼もお待ちしております。

お問い合わせページTwitterのDMからお気軽にお問い合わせください!

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

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は非常に便利なので使う場面も多いかと思います。

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