Список объектов data class в Kotlin
Список объектов вы уже собирали из обычных классов -
listOf и mutableListOf работают так же
для data class. Каждый элемент - отдельная
запись с теми же полями:
data class User(val name: String, val age: Int)
fun main() {
val team = listOf(
User("Ann", 25),
User("Bob", 30),
)
println(team.size)
}
Элементы списка можно фильтровать и сортировать
стандартными функциями, обращаясь к полям по точке
или в лямбде с параметром it:
data class Score(val name: String, val pts: Int)
fun main() {
val rows = listOf(
Score("Ann", 10),
Score("Bob", 7),
Score("Cy", 12),
)
val top = rows.filter { it.pts >= 10 }
println(top.size)
}
При обходе удобно выводить каждую запись целиком -
автоматический toString сработает для каждого
элемента. Поля можно разложить деструктуризацией
в цикле for:
data class Task(val title: String, val done: Boolean)
fun main() {
val jobs = listOf(
Task("read", true),
Task("write", false),
)
for (job in jobs) {
println(job)
}
}
Сделайте data class Pet с полями
name и kind.
Дан список:
val pets = listOf(
Pet("Rex", "dog"),
Pet("Mia", "cat"),
)
Выведите на экран количество элементов
в списке pets.
Сделайте data class Grade с полями
subject и mark.
Дан список:
val sheet = listOf(
Grade("math", 5),
Grade("art", 3),
Grade("math", 4),
)
Отфильтруйте список sheet: оставьте
только записи с mark >= 4 и выведите
на экран их число.