ふりぶろぐ
Web Engineer's Blog
Java

【Java】Mapのループ

Java

前回はEnumのループでしたが今回はMapのループの話。

Mapをループでまわしたい場面って結構ありますよね。

Mapとは

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

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

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

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

Mapのループ

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

String型のキーに対して、List型の値を持つことが多いイメージ。

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

例として使う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 は ぶどう です

まとめ

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

Mapをループさせる場合はラムダを使うのをオススメします。

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

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

ABOUT ME
りーふ
たまにブログを書いてるWebエンジニア。 サーバーサイドメインでインフラとフロントエンドもたまにやります。 Javaが得意。 Play Frameworkが好き。 本業は迷惑をかけない程度に手を抜くスタイル。 意識高い系は苦手。