partitionでリストを条件別に分割

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

Kotlinのpartition関数を使うと、リストを 条件に応じて2つのリストに分割 できます。filterを2回使うよりもシンプルに書けるため、データの分類が簡単になります。

partitionの基本的な使い方

partitionは、リストを 指定した条件に合うものと合わないものの2つのリスト に分割する関数です。

Kotlin
val numbers = listOf(1, 2, 3, 4, 5, 6)

val (even, odd) = numbers.partition { it % 2 == 0 }

println("偶数: $even") // 出力: 偶数: [2, 4, 6]
println("奇数: $odd")  // 出力: 奇数: [1, 3, 5]

このように、リストの中から 偶数と奇数を簡単に分類 できます。

partitionの活用例

1. ユーザーの年齢別グループ分け

Kotlin
data class User(val name: String, val age: Int)

val users = listOf(
    User("田中", 25),
    User("佐藤", 30),
    User("鈴木", 17),
    User("高橋", 18),
)

val (adults, minors) = users.partition { it.age >= 18 }

println("成人: $adults")  // 出力: 成人: [User(name=田中, age=25), User(name=佐藤, age=30), User(name=高橋, age=18)]
println("未成年: $minors") // 出力: 未成年: [User(name=鈴木, age=17)]

ユーザーを年齢別にグループ分けするのも簡単にできます。

2. 有効・無効なデータを分類

Kotlin
val emails = listOf("test@example.com", "invalid-email", "user@domain.com", "wrong@")

val (validEmails, invalidEmails) = emails.partition { it.contains("@") }

println("有効なメールアドレス: $validEmails")  
println("無効なメールアドレス: $invalidEmails")

データのバリデーションに役立ちます。
(実際のメールアドレスのバリデーションチェックには正規表現やライブラリを活用しましょう)

3. リストのデータ処理を簡潔に

Kotlin
val scores = listOf(85, 42, 90, 75, 30, 60)

val (passed, failed) = scores.partition { it >= 60 }

println("合格: $passed") // 出力: 合格: [85, 90, 75, 60]
println("不合格: $failed") // 出力: 不合格: [42, 30]

試験の合否判定を簡潔に処理できます。

partitionを使うメリット

  1. リストを2つに分ける処理を簡潔に書ける
  2. filterを2回使うより効率的
  3. データの分類やバリデーションに便利

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

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