Macでパスワード付きZIPファイルを作成!圧縮・解凍できない、開けない問題を解決!
野田竣介
フェルメール株式会社
今回はこのような質問をいただきました。
Mapをループさせて値を取得したい!
よく使うMapですがループさせるのって少し難しいですよね。
そこで今回はこちらの質問について解説していきます!
Mapはキー(key)と値(value)で構成されています。
連想配列と同じイメージですね。
値に対するキーが設定されているので、そのキーを指定して値を取得するのが基本です。
今回は1つずつ値を取得するのではなく、Mapに格納されているすべてのkeyとvalueを取得してみます。
Mapのキーと値はString型に限らず、すべての型を使えます。
汎用性が高く、非常に使いやすいです。
今回、例として使うMapはキー、値ともにString型です。
例として、キーが英語、値が日本語のMapを作ってループさせてみたいと思います。
Mapの初期化は基本的にはnew HashMap<>()を使います。
Map<String, String> map = new HashMap<>();
map.put("apple", "りんご");
map.put("strawberry", "いちご");
map.put("grape", "ぶどう");
まずは拡張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は非常に便利なので使う場面も多いかと思います。
もしループさせる必要があれば使ってみてください!