どうも、ちょげ(@chogetarou)です。
sumOf()を使ってMap(マップ)の全ての値(value)の合計値を取得する方法を紹介します。
方法
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
コメント