groupByでリストを簡単に分類

Kotlin
記事内に広告が含まれる場合があります

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を使うメリット

  1. リストを簡単にカテゴリごとに分類できる
  2. データをキーごとに整理し、見やすく管理できる
  3. mapValues を組み合わせると、グループごとの集計も可能

データを整理・分類する場面では、ぜひ groupBy を活用してみてください!

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