Фильтрация и отображение
Преобразуйте коллекции
«Фильтрация и отображение» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.
Преобразование коллекций
Коллекции Kotlin предоставляют богатый набор функциональных операций. Две наиболее распространённые — filter (выбирает элементы) и map (преобразует элементы). Они возвращают новые коллекции и никогда не изменяют исходную.
Функция filter
filter оставляет только элементы, удовлетворяющие условию, и возвращает новый список.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evens = numbers.filter { it % 2 == 0 }
println(evens)
}filterNot и filterNotNull
filterNot оставляет элементы, которые НЕ соответствуют условию. filterNotNull удаляет элементы со значением null и возвращает список без null.
fun main() {
val nums = listOf(1, 2, 3, 4)
println(nums.filterNot { it > 2 })
val withNulls = listOf(1, null, 3, null)
println(withNulls.filterNotNull())
}filterIndexed
filterIndexed предоставляет в условии и индекс, и значение.
fun main() {
val letters = listOf("a", "b", "c", "d")
val result = letters.filterIndexed { index, _ -> index % 2 == 0 }
println(result)
}Функция map
map применяет преобразование к каждому элементу и возвращает новый список результатов. Тип результата может отличаться от типа входных данных.
fun main() {
val numbers = listOf(1, 2, 3)
val squares = numbers.map { it * it }
println(squares)
}Преобразование в другой тип
map может изменить тип элементов, например превратить числа в строки.
fun main() {
val numbers = listOf(1, 2, 3)
val labels = numbers.map { "Item $it" }
println(labels)
}mapIndexed
mapIndexed предоставляет индекс вместе с каждым элементом, поэтому позицию можно использовать при преобразовании.
fun main() {
val fruits = listOf("apple", "banana", "cherry")
val numbered = fruits.mapIndexed { i, fruit -> "${i + 1}. $fruit" }
numbered.forEach { println(it) }
}mapNotNull
mapNotNull преобразует каждый элемент и отбрасывает результаты со значением null. Это удобный способ объединить преобразование и фильтрацию.
fun main() {
val strings = listOf("1", "two", "3", "four")
val numbers = strings.mapNotNull { it.toIntOrNull() }
println(numbers)
}Цепочка filter и map
Эти операции естественно объединяются в цепочку. Распространённый шаблон — сначала выполнить фильтрацию, а затем преобразовать оставшиеся элементы.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
val result = numbers
.filter { it % 2 == 0 }
.map { it * 10 }
println(result)
}Операции не изменяют исходные данные
И filter, и map возвращают совершенно новые списки. Исходная коллекция не изменяется, благодаря чему код становится безопаснее и его проще понимать.
fun main() {
val original = listOf(1, 2, 3)
val doubled = original.map { it * 2 }
println("Original: $original")
println("Doubled: $doubled")
}Фильтрация и преобразование на практике
Вместе filter и map позволяют декларативно описывать конвейеры обработки данных: описывайте, ЧТО вы хотите получить, а не КАК выполнять цикл. Это понятнее, чем ручные циклы for с отслеживанием индексов.
Быстрая проверка
В чём разница между фильтрацией и отображением?
Итоги
Вы научились выбирать элементы с помощью filter и его вариантов filterNot, filterIndexed, filterNotNull, а также преобразовывать их с помощью map, mapIndexed и mapNotNull. Эти операции легко объединяются в цепочки и никогда не изменяют исходные данные. Далее Вы научитесь организовывать данные с помощью группировки и разделения.
Часто задаваемые вопросы
Урок «Фильтрация и отображение» бесплатный?
Да — полный текст урока «Фильтрация и отображение» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.
Чему я научусь в уроке «Фильтрация и отображение»?
Преобразуйте коллекции Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Academy?
Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Фильтрация и отображение»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Academy?
Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Фильтрация и отображение
- Группировка и разбиение
- Агрегация
- Создание отображений и уплощение