0Pricing
Android Academy · Урок

Коллекции 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 / mutableMapOf
  • filter — выбор подходящих элементов
  • 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 — локальная установка не требуется.

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

  1. Коллекции Kotlin
  2. Основы RecyclerView
  3. События нажатия в RecyclerView
  4. SharedPreferences
  5. Настройки DataStore
  6. Адаптеры и DiffUtil
← Назад к Android Academy