Списки и изменяемые списки
Храните упорядоченные данные.
«Списки и изменяемые списки» — бесплатный урок Android Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.
Что такое список
Список — это упорядоченная коллекция элементов. У каждого элемента есть позиция, называемая индексом, начиная с 0.
В Kotlin есть два вида списков: списки, доступные только для чтения и недоступные для изменения, и изменяемые списки, в которые можно добавлять элементы и из которых их можно удалять.
Списки встречаются во всех приложениях Android: лента публикаций, ряд кнопок, результаты поиска.
Создание списка только для чтения
Используйте listOf(), чтобы создать список только для чтения. После создания в него нельзя добавлять элементы или удалять их.
Это самый безопасный вариант по умолчанию. Если данные не изменяются, отдавайте предпочтение списку только для чтения.
fun main() {
val fruits = listOf("apple", "banana", "cherry")
println(fruits)
println("Size: ${fruits.size}")
}Доступ к элементам по индексу
Прочитать элемент можно с помощью квадратных скобок и его индекса. Первый элемент находится по индексу 0.
Для доступа к началу и концу списка также можно использовать first() и last().
fun main() {
val colors = listOf("red", "green", "blue")
println(colors[0])
println(colors.first())
println(colors.last())
}Перебор списка
Цикл for посещает каждый элемент по порядку. Это самый распространённый способ обработать все элементы.
Здесь каждое имя выводится в отдельной строке.
fun main() {
val names = listOf("Ada", "Linus", "Grace")
for (name in names) {
println("Hello, $name")
}
}Создание изменяемого списка
Если содержимое нужно изменять, используйте mutableListOf(). Он позволяет добавлять и удалять элементы после создания списка.
Используйте add(), чтобы добавить элемент в конец.
fun main() {
val tasks = mutableListOf("wake up", "code")
tasks.add("sleep")
println(tasks)
}Удаление элементов
Используйте remove(), чтобы удалить определённое значение, или removeAt(), чтобы удалить элемент по индексу.
Обе функции работают только с изменяемыми списками. Их вызов для списка только для чтения вызывает ошибку компиляции.
fun main() {
val nums = mutableListOf(10, 20, 30, 40)
nums.remove(20)
nums.removeAt(0)
println(nums)
}Изменение элемента
В изменяемом списке присвойте индексу новое значение, чтобы заменить существующий элемент.
Индекс должен уже существовать, иначе возникнет ошибка выхода за границы.
fun main() {
val scores = mutableListOf(5, 8, 3)
scores[1] = 99
println(scores)
}Проверка содержимого
Используйте contains() или ключевое слово in, чтобы проверить, содержит ли список определённое значение.
С помощью isEmpty() можно проверить, нет ли в списке элементов. Эти средства работают с обоими видами списков.
fun main() {
val pets = listOf("cat", "dog")
println("cat" in pets)
println(pets.contains("fish"))
println(pets.isEmpty())
}Типы только для чтения и изменяемые типы
Тип List<T> доступен только для чтения. Тип MutableList<T> предоставляет операции изменения.
Распространённый подход — создать список с изменяемым типом, а затем предоставить его как доступный только для чтения List, чтобы другой код не мог его изменить.
val safe: List<Int> = mutableListOf(1, 2, 3)
// safe.add(4) would NOT compileРазмер и индексы
Свойство size сообщает, сколько элементов содержит список.
Допустимые индексы находятся в диапазоне от 0 до size - 1. Используйте indices, чтобы перебирать позиции.
fun main() {
val items = listOf("a", "b", "c")
for (i in items.indices) {
println("$i -> ${items[i]}")
}
}Добавление нескольких элементов
Используйте addAll(), чтобы добавить в изменяемый список все элементы другой коллекции.
Это удобно при объединении результатов, например при объединении двух страниц данных.
fun main() {
val list = mutableListOf(1, 2)
list.addAll(listOf(3, 4, 5))
println(list)
println("Total: ${list.size}")
}Быстрая проверка
Проверьте, насколько хорошо Вы поняли списки Kotlin.
Итоги
Вы узнали, что списки упорядочены, а их индексы начинаются с 0. listOf() создаёт списки только для чтения, а mutableListOf() — изменяемые списки.
Вы можете добавлять, удалять и изменять элементы, перебирать список и проверять его содержимое. Предпочитайте списки только для чтения, если изменяемость действительно не нужна.
Часто задаваемые вопросы
Урок «Списки и изменяемые списки» бесплатный?
Да — полный текст урока «Списки и изменяемые списки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.
Чему я научусь в уроке «Списки и изменяемые списки»?
Храните упорядоченные данные. Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Списки и изменяемые списки»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Списки и изменяемые списки
- Отображения и множества
- map, filter, forEach
- Лямбды и функции высшего порядка