すきま風

勉強したことのメモとか

Kotlin groupingByって便利だね 2

問題: 生徒オブジェクトのリストがあり、性別ごとの所持金額を集計する

data class Student(
    val name: String,
    val gender: Gender,
    val wallet: Int
)

enum class Gender {
    MALE,
    FEMALE
}

val students = listOf(
    Student("foo", MALE, 1000),
    Student("bar", MALE, 100),
    Student("fizz", FEMALE, 200),
    Student("buzz", FEMALE, 300)
)

解答

val map = students.groupingBy { it.gender }.fold(0) { price, student ->
    price + student.wallet
}

println(map) // -> {MALE=1100, FEMALE=500}

foldの使い方をよく忘れるのでメモ