Коллекции Kotlin
Работайте с List, Set и Map. Используйте функциональные операторы filter, map, sortedBy, forEach, find, any и all, объединяя операции для лаконичного преобразования данных.
«Коллекции Kotlin» — бесплатный урок Android Academy на CoddyKit. Это урок 1 из 6. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 6 уроков всего.
Обзор коллекций
Стандартная библиотека Kotlin предоставляет три основных типа коллекций:
- Список — упорядоченная последовательность элементов (может содержать дубликаты)
- Множество — уникальные элементы без определённого порядка
- Ассоциативный массив — пары «ключ–значение», ключи уникальны
Для каждого типа существует неизменяемая версия (только для чтения) и изменяемая версия (её можно изменять).
Списки: listOf и mutableListOf
Создавайте списки с помощью фабричных функций:
fun main() {
// Immutable — cannot add/remove items
val fruits = listOf("Apple", "Banana", "Cherry")
println(fruits[0]) // Apple
println(fruits.size) // 3
// Mutable — can modify
val scores = mutableListOf(10, 20, 30)
scores.add(40)
scores.removeAt(0) // remove index 0
println(scores) // [20, 30, 40]
}Map: пары «ключ–значение»
Используйте mapOf и mutableMapOf для создания ассоциативных массивов. Получайте значения по ключу:
fun main() {
val capitals = mapOf(
"Turkey" to "Ankara",
"Germany" to "Berlin",
"Japan" to "Tokyo"
)
println(capitals["Turkey"]) // Ankara
println(capitals["France"]) // null (not found)
println(capitals.getOrDefault("France", "Unknown")) // Unknown
// Iterate
for ((country, city) in capitals) {
println("$country -> $city")
}
}filter — выбор элементов
filter возвращает новый список, содержащий только элементы, соответствующие условию:
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8)
val evens = numbers.filter { it % 2 == 0 }
println(evens) // [2, 4, 6, 8]
val names = listOf("Alice", "Bob", "Anna", "Charlie")
val aNames = names.filter { it.startsWith("A") }
println(aNames) // [Alice, Anna]
}map — преобразование элементов
map преобразует каждый элемент и возвращает новый список:
fun main() {
val prices = listOf(10.0, 20.0, 30.0)
// Apply 10% tax
val withTax = prices.map { it * 1.1 }
println(withTax) // [11.0, 22.0, 33.0]
val names = listOf("alice", "bob", "carol")
val upper = names.map { it.uppercase() }
println(upper) // [ALICE, BOB, CAROL]
}sortedBy и sortedByDescending
Сортируйте список по свойству:
data class Student(val name: String, val grade: Int)
fun main() {
val students = listOf(
Student("Alice", 88),
Student("Bob", 95),
Student("Carol", 72)
)
val byGrade = students.sortedByDescending { it.grade }
for (s in byGrade) println("${s.name}: ${s.grade}")
// Bob: 95
// Alice: 88
// Carol: 72
}forEach и find
Ещё две полезные функции для работы с коллекциями:
forEach— перебирает элементы без создания результатаfind— возвращает первый элемент, соответствующий условию, или значение null
Цепочки операций
Объединяйте несколько операций в цепочку для лаконичного преобразования данных:
data class Product(val name: String, val price: Double, val inStock: Boolean)
fun main() {
val products = listOf(
Product("Laptop", 999.0, true),
Product("Mouse", 29.0, false),
Product("Keyboard", 79.0, true),
Product("Monitor", 349.0, true)
)
// In-stock products under $500, sorted by price
val result = products
.filter { it.inStock && it.price < 500 }
.sortedBy { it.price }
.map { "${it.name}: ${it.price}" }
result.forEach { println(it) }
}any, all, count
Агрегатные функции для быстрого получения результатов:
any { condition }— true, если условию соответствует хотя бы один элементall { condition }— true, если условию соответствуют все элементыcount { condition }— количество элементов, соответствующих условиюsumOf { it.price }— сумма числового свойства
Быстрая проверка
Какую функцию следует использовать, чтобы получить только элементы списка, соответствующие условию?
Итоги: коллекции Kotlin
Теперь вы умеете эффективно работать с данными в Kotlin:
listOf/mutableListOf,mapOf/mutableMapOffilter— выбор подходящих элементовmap— преобразование элементовsortedBy/sortedByDescending- Объединяйте операции в понятные цепочки преобразования данных
Далее: отображение списков на экране с помощью RecyclerView.
Часто задаваемые вопросы
Урок «Коллекции Kotlin» бесплатный?
Да — полный текст урока «Коллекции Kotlin» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 6 уроков всего.
Чему я научусь в уроке «Коллекции Kotlin»?
Работайте с List, Set и Map. Используйте функциональные операторы filter, map, sortedBy, forEach, find, any и all, объединяя операции для лаконичного преобразования данных. Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 6.
Сколько времени занимает урок «Коллекции Kotlin»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Коллекции Kotlin
- Основы RecyclerView
- События нажатия в RecyclerView
- SharedPreferences
- Настройки DataStore
- Адаптеры и DiffUtil