Kotlin Academy · Урок

mutableListOf, mutableMapOf: изменяемые построители

Создавайте изменяемые коллекции и безопасно изменяйте их.

Урок 2 из 413 шагов

«mutableListOf, mutableMapOf: изменяемые построители» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.

Когда нужны изменения

Изменяемые коллекции позволяют добавлять, удалять и обновлять элементы. Используйте их, когда коллекция со временем увеличивается или изменяется.

mutableListOf

mutableListOf создаёт MutableList на основе ArrayList. Вы можете добавлять, удалять и заменять элементы.
val list = mutableListOf("a", "b", "c")
list.add("d")
list.add(0, "z")  // insert at index 0
list.remove("b")
println(list)  // [z, a, c, d]

mutableSetOf

mutableSetOf создаёт MutableSet. add возвращает false, если такой элемент уже существует.
val set = mutableSetOf(1, 2, 3)
set.add(4)
set.add(2)  // already exists, no change
set.remove(1)
println(set)  // [2, 3, 4]

mutableMapOf

mutableMapOf создаёт MutableMap. Для вставки и обновления используйте операцию вставки или [].
val map = mutableMapOf("a" to 1, "b" to 2)
map["c"] = 3
map["a"] = 10      // update
map.remove("b")
println(map)  // {a=10, c=3}

addAll, removeAll, retainAll

Массовые операции для изменяемых коллекций.
val nums = mutableListOf(1, 2, 3)
nums.addAll(listOf(4, 5, 6))
println(nums)  // [1, 2, 3, 4, 5, 6]
nums.removeAll { it % 2 == 0 }
println(nums)  // [1, 3, 5]

clear и replaceAll

clear удаляет все элементы. replaceAll преобразует каждый элемент на месте.
val list = mutableListOf(1, 2, 3, 4)
list.replaceAll { it * 2 }
println(list)  // [2, 4, 6, 8]
list.clear()
println(list)  // []

Создание списка с помощью buildList

buildList создаёт доступный только для чтения список через изменяемый построитель — лаконично и удобно.
val squares = buildList {
    for (i in 1..5) add(i * i)
}
println(squares)  // [1, 4, 9, 16, 25]

buildMap и buildSet

Аналогично, buildMap и buildSet позволяют создавать отображения и множества с помощью изменяемых операций, возвращая результаты только для чтения.
val map = buildMap {
    put("en", "English")
    put("de", "German")
    put("tr", "Turkish")
}
println(map["tr"])  // Turkish

ArrayList, LinkedList: явные типы

Если нужны определённые характеристики производительности, используйте напрямую ArrayList или ArrayDeque.
val arrayList = ArrayList<String>()
arrayList.add("x")
val deque = ArrayDeque<Int>()
deque.addFirst(1)
deque.addLast(2)

getOrPut для накопления в отображении

getOrPut возвращает существующее значение либо вставляет значение по умолчанию и возвращает его — это особенно удобно для группировки.
val groups = mutableMapOf<String, MutableList<Int>>()
for (i in 1..6) {
    val key = if (i % 2 == 0) "even" else "odd"
    groups.getOrPut(key) { mutableListOf() }.add(i)
}
println(groups)

Сортировка изменяемых списков

sort и sortWith сортируют изменяемые списки на месте.
val nums = mutableListOf(3, 1, 4, 1, 5, 9)
nums.sort()
println(nums)  // [1, 1, 3, 4, 5, 9]
nums.sortDescending()
println(nums)  // [9, 5, 4, 3, 1, 1]

Быстрая проверка

Какая функция создаёт доступный только для чтения List, используя внутри лямбды изменяемый построитель?

Повторение

mutableListOf/SetOf/MapOf — для изменяемых коллекций. add, remove, вставка, clear и replaceAll — для изменений. buildList/Map/Set — для аккуратного создания неизменяемых результатов из изменяемого построения. Далее: безопасный доступ к элементам!
Можно начать бесплатно

Изучай Kotlin с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
51
Уроки
203

Часто задаваемые вопросы

Урок «mutableListOf, mutableMapOf: изменяемые построители» бесплатный?

Да — полный текст урока «mutableListOf, mutableMapOf: изменяемые построители» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.

Чему я научусь в уроке «mutableListOf, mutableMapOf: изменяемые построители»?

Создавайте изменяемые коллекции и безопасно изменяйте их. Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kotlin Academy?

Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «mutableListOf, mutableMapOf: изменяемые построители»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kotlin Academy?

Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. listOf, setOf, mapOf: доступные только для чтения коллекции
  2. mutableListOf, mutableMapOf: изменяемые построители
  3. Доступ к элементам: get, first, last, getOrNull
  4. Перебор и преобразование коллекций со стандартной библиотекой
← Назад к Kotlin Academy