[Kotlin]sumOf()でMap(マップ)の値の合計値を取得するには?

Kotlin

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

sumOf()を使ってMap(マップ)の全ての値(value)の合計値を取得する方法を紹介します。

スポンサーリンク

方法

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

sumOf()を使ってMap(マップ)の全ての値(value)の合計値を取得するには、valuesを使います。

まず、map.valuesのように、Mapのvaluesプロパティにアクセスします。

valuesプロパティからsumOf{}を呼び出します。

sumOf{}のクロージャーに「it」を指定します。

val result = map.values.sumOf { it }

上記のsumOf()は、 valuesプロパティのアクセス元のMapの値の合計を返します。

また、値のプロパティの合計値を取得するには、sumOf{}のクロージャー内でitからプロパティにアクセスします。

//prop=プロパティ
val result = map.values.sumOf { it.prop }

使用例

data class Person(val name: String, val age: Int)

fun main() {
    val numbers = mapOf(
        "one" to 1,
        "two" to 2,
        "three" to 3,
        "four" to 4,
        "five" to 5
    )
    
    val persons = mapOf(
    	"one" to Person("Taro", 22),
        "two" to Person("Jiro", 18),
        "three" to Person("Saburo", 15),
    )
    
    val result = numbers.values.sumOf { it }
    val result2 = persons.values.sumOf { it.age }
    
    println(result)
    println(result2)
}
出力:
15
55

コメント

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