[Kotlin]forEachでMap(マップ)をループするには?

Kotlin

どうも、ちょげ(@chogetarou)です。

forEachを使ってMap(マップ)をループする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

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 -> //ループ処理 }

コメント

タイトルとURLをコピーしました