どうも、ちょげ(@chogetarou)です。
forEachを使ってMap(マップ)をループする方法を紹介します。
方法

forEachを使ってMap(マップ)をループする方法は、3つあります。
キーと値のペア
1つ目は、キーと値のペアをループ方法です。
まず、MapからforEach{}を呼び出します。
クロージャー内に、1つの引数とループ処理を記述します。
ループ処理では、引数のkeyプロパティでmapのキー、引数のvalueプロパティでmapの値を取得します。
map.forEach { item ->
//ループ処理
//item.keyでmapのキー
//item.valueでmapの値
}
上記のforEach()は、Mapの要素をEntryとしてループします。
もし、Mapのキーと値を別々に取得したい場合は、クロージャーに2つの引数を指定します。
map.forEach { key,value ->
//ループ処理
//keyでmapのキー
//valueでmapの値
}
使用例1
fun main() {
val numbers = mapOf(
"one" to 1,
"two" to 2,
"three" to 3,
"four" to 4,
"five" to 5
)
numbers.forEach { item ->
println("${item.key}:${item.value}")
}
}
出力:
one:1
two:2
three:3
four:4
five:5
使用例2
fun main() {
val numbers = mapOf(
"one" to 1,
"two" to 2,
"three" to 3,
"four" to 4,
"five" to 5
)
numbers.forEach { key,value ->
println("$key=$value")
}
}
出力
one=1
two=2
three=3
four=4
five=5
キーのみ
2つ目は、キーのみをループする方法です。
まず、map.keys
のように、Mapのkeysプロパティにアクセスします。
keysプロパティからforEach{}を呼び出します。
そして、forEach{}のクロージャー内に、1つの引数とループ処理を指定します。
ループ処理では、引数でMapのキーを取得できます。
map.keys.forEach { key ->
//ループ処理
//keyでmapの値を取得
}
上記のforEach{}は、keysプロパティのアクセス元のMapのキーをループします。
使用例
fun main() {
val numbers = mapOf(
"one" to 1,
"two" to 2,
"three" to 3,
"four" to 4,
"five" to 5
)
numbers.keys.forEach { key ->
println(key)
}
}
出力:
one
two
three
four
five
値のみ
3つ目は、値のみをループする方法です。
まず、map.values
のように、Mapのvaluesプロパティにアクセスします。
valuesプロパティからforEach{}を呼び出します。
そして、forEach{}のクロージャー内に、1つの引数とループ処理を指定します。
ループ処理では、引数でMapの値を取得できます。
map.values.forEach { value ->
//ループ処理
//valueでmapの値を取得
}
上記のforEach{}は、valuesプロパティのアクセス元のMapの値をループします。
使用例
fun main() {
val numbers = mapOf(
"one" to 1,
"two" to 2,
"three" to 3,
"four" to 4,
"five" to 5
)
numbers.values.forEach { value ->
println(value)
}
}
出力:
1
2
3
4
5
まとめ
forEachでMap(マップ)をループする方法は、次の3つです。
- キーと値のペアをループする方法
map.forEach { item -> //ループ処理 }
map.forEach { key,value -> //ループ処理 }
- キーのみをループする方法
map.keys.forEach { key -> //ループ処理 }
- 値のみをループする方法
map.values.forEach { value -> //ループ処理 }
コメント