前回は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