Kotlinでは、リストのデータをカテゴリ別に整理するのに groupBy
関数が便利です。これを使うと、データをキーごとにグループ化し、管理しやすくなります。
groupByの基本的な使い方
groupBy
を使うと、リストの要素を指定したキーごとに分類し、Map<Key, List<Value>>
の形式で取得できます。
Kotlin
val numbers = listOf(1, 2, 3, 4, 5, 6)
val grouped = numbers.groupBy { it % 2 == 0 }
println(grouped)
// 出力: {false=[1, 3, 5], true=[2, 4, 6]}
この例では、偶数 (true
) と奇数 (false
) に分類されています。
groupByの活用例
1. オブジェクトのプロパティで分類
Kotlin
data class Person(val name: String, val age: Int)
val people = listOf(
Person("田中", 25),
Person("佐藤", 30),
Person("鈴木", 25),
Person("高橋", 30),
Person("伊藤", 40)
)
val groupedByAge = people.groupBy { it.age }
println(groupedByAge)
// 出力: {25=[Person(name=田中, age=25), Person(name=鈴木, age=25)], 30=[Person(name=佐藤, age=30), Person(name=高橋, age=30)], 40=[Person(name=伊藤, age=40)]}
年齢ごとにユーザーをグループ化できます。
2. データのカテゴリ分類
Kotlin
val words = listOf("apple", "banana", "avocado", "blueberry", "cherry")
val groupedByFirstLetter = words.groupBy { it.first() }
println(groupedByFirstLetter)
// 出力: {a=[apple, avocado], b=[banana, blueberry], c=[cherry]}
頭文字ごとにリストを分類できます。
3. グループごとのデータ変換 (mapValues を活用)
Kotlin
val wordCounts = words.groupBy { it.first() }
.mapValues { (_, list) -> list.size }
println(wordCounts)
// 出力: {a=2, b=2, c=1}
各グループの要素数を取得することも可能です。
groupByを使うメリット
- リストを簡単にカテゴリごとに分類できる
- データをキーごとに整理し、見やすく管理できる
mapValues
を組み合わせると、グループごとの集計も可能
データを整理・分類する場面では、ぜひ groupBy
を活用してみてください!