0Pricing
Kotlin Academy · Урок

Фильтрация и отображение

Преобразуйте коллекции

«Фильтрация и отображение» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Фильтрация и отображение
  2. Группировка и разбиение
  3. Агрегация
  4. Создание отображений и уплощение
← Назад к Kotlin Academy