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を使うメリット
- リストを2つに分ける処理を簡潔に書ける
filter
を2回使うより効率的- データの分類やバリデーションに便利
データを分類する場面では、ぜひpartition
を活用してみてください!