Введение в MutableList
В предыдущих разделах вы узнали, как объявлять переменные для хранения данных и управления ими. Но что, если хотим сохранить и обработать не одно значение, а несколько данных одного типа? В таких случаях мы прибегаем к использованию списка, который позволяет нам обрабатывать несколько значений одного и того же типа как единое целое. В этом разделе мы рассмотрим, что такое MutableList
и как мы можем использовать его для хранения и обработки данных. Это удобно в тех случаях, когда вы точно не знаете, сколько элементов программа будет обрабатывать во время выполнения.
Введение в MutableList
Стандартная библиотека Kotlin предоставляет множество способов организации данных и группировки нескольких значений. Теперь мы рассмотрим один из них – Изменяемый список (MutableList
).
MutableList
представляет собой упорядоченный список переменных одного и того же типа. Вы можете получить доступ к элементам списка по их индексам.
На рисунке ниже показан изменяемый список из пяти чисел с плавающей запятой. Каждый элемент имеет целочисленный индекс (0-4
), поэтому вы можете получить доступ к элементу, обратившись к его индексу. Первый элемент всегда имеет индекс 0
, а последний элемент имеет индекс, равный размеру списка минус единица (numbers.size - 1
).
Изменяемый список из пяти элементов с плавающей запятой
Создание MutableList с указанными элементами
В Kotlin функция mutableListOf()
используется для создания объекта класса MutableList
.
Kotlin может обрабатывать любые типы MutableList
, которые вы хотите, например: Int
, Long
, Double
, Float
, Char
, String
, Byte
или Boolean
.
Вот пример создания изменяемого списка в тех случаях, когда мы знаем тип содержимого. В угловых скобках <>
вы можете указать тип данных, которые будут храниться в списке. Вы узнаете больше о <>
в следующих разделах.
Приведенный выше фрагмент кода выводит три списка:
Кроме того, Kotlin позволяет вам явно не указывать, какой тип данных хранится в списке:
Размер MutableList
Чтобы создать изменяемый список заданного размера n
, мы используем функцию MutableList(n)
:
В фигурных скобках мы записываем объект, который будет составлять наш список. Например, если вы укажете "a"
, список будет содержать 5 элементов, равных "a"
:
Изменяемый список всегда имеет заданный размер, то есть количество элементов. Чтобы получить его, нам нужно получить значение size
. Это число типа Int
.
Чтение списка из входных данных
Вам не нужно разбираться со всеми фрагментами прямо сейчас, просто используйте их в качестве шаблона в своих проектах!
Чтобы прочитать список определенного размера из консоли, нам сначала нужно создать MutableList
некоторого типа с известным размером. Внутри фигурных скобок мы должны поместить readln()
, с помощью которого мы можем считывать входные данные с консоли. Функция readln()
возвращает строку, поэтому не забудьте преобразовать входную строку в тип созданного списка.
Этот код позволяет вам прочитать 5 чисел, каждое число в отдельной строке.
Если вы хотите прочитать список в одной строке, используйте следующий подход. Вы можете прочитать список с помощью функции readln()
. Вы получите строку, которую вы должны разделить.
Давайте взглянем на этот фрагмент кода. Мы считываем строку из входных данных, а затем используем split()
. Мы делим нашу строку на меньшие по размеру с помощью пробела, затем используем функцию map
для преобразования каждого элемента в Int
, а затем преобразуем результат в MutableList
. Здесь вы можете прочитать больше о преобразовании с помощью map
.
Существует также способ, позволяющий игнорировать разрывы строк и дополнительные пробелы во входной строке. Вы можете сделать это с помощью регулярных выражений, которые часто используются в поиске и редактировании текста.
С помощью этого регулярного выражения вы можете игнорировать пробелы и символы табуляции во входной строке. Вы можете узнать больше о регулярных выражениях в наших разделах.
Доступ к элементам
Вы можете изменять значения изменяемых элементов списка. Используйте индекс, чтобы задать значение в списке.
Установка значения элемента с использованием индекса элемента:
Получение значения элемента с использованием индекса элемента:
Индексы списка - это числа от 0
(первый элемент) до list.size - 1
(последний элемент).
Вот пример трехэлементного списка целых чисел:
Давайте подробнее рассмотрим приведенный выше код. Во-первых, у нас есть список из трех элементов. Все элементы равны 0
. Затем первому элементу списка с индексом 0
присваивается значение 1
. Затем второму элементу списка с индексом 1
присваивается значение 2
. После этого последнему элементу списка с индексом 2
присваивается значение 3
(сумма 1
и 2
). Затем мы печатаем первый и последний элементы списка с индексом 2
. Затем мы печатаем первый и последний элементы трехэлементного списка.
Если мы попытаемся получить доступ к несуществующему элементу по индексу, в программе возникнет ошибка. Давайте попробуем получить четвертый элемент с индексом 3
в приведенном выше списке numbers
:
Ваша программа выдаст ошибку.
Как вы уже знаете, последний элемент списка имеет индекс, равный list.size - 1
. Давайте обратимся к последнему элементу и к предпоследнему:
Kotlin предоставляет несколько удобных способов получения первого и последнего элементов списка, а также последнего индекса в списке:
Используйте этот подход, чтобы сделать ваш код более читаемым и избежать доступа к несуществующим индексам.
Заключение
В этом разделе мы обсудили концепцию изменяемого списка и основные операции с ним. Пожалуйста, помните, что:
Изменяемый список - это структура данных элементов, доступ к которым можно получить по индексу
Первый элемент списка имеет индекс
0
Изменяемый список всегда имеет заданный размер
Можно изменить элемент списка, используя индекс элемента
Kotlin может обрабатывать списки различных типов:
Int
,Char
,Double
и так далее.
Last updated