Массивы
Массивы — структуры данных, хранящие множество элементов одного типа. Kotlin предлагает несколько способов работы с массивами.
Создание массивов
Простой массив создаётся с помощью функции arrayOf():
var items: Array<Int> = arrayOf(5, 7, 12, 40, 1, 0)
Здесь создан массив целых чисел (Int). Тип можно опустить, если он определяется по значениям:
val samArray = arrayOf(1) // Тип данных будет Int
Добавление элемента другого типа приводит к типу Any:
val samArray = arrayOf(1, "string") // Тип данных будет Any
Доступ к элементам
Доступ к элементам осуществляется по индексу (начиная с 0):
println(items[0]) // Выведет 5
println(items.get(1)) // Выведет 7
Размер массива:
println(items.size) // Выведет 6
Изменение элемента:
items[0] = 45
println(items[0]) // Выведет 45
Перебор элементов
Перебор с помощью цикла for:
for (element in items) {
println(element)
}
Более эффективный forEach:
items.forEach { element ->
println(element)
}
Получение индекса и значения с forEachIndexed:
items.forEachIndexed { index, element ->
println("Элемент с индексом $index: $element")
}
Списки (Lists)
Часто вместо массивов используются списки (List). Они создаются с помощью listOf():
val itemsList = listOf(5, 7, 12, 40, 1, 0)
Списки предлагают больше методов, таких как indexOf, lastIndexOf, last, plus.
Ассоциативные массивы (Maps)
Ассоциативные массивы (карты) создаются с помощью mapOf():
val user = mapOf(
"name" to "Bob",
"age" to 1,
"isHisCar" to true
)
Ключи и значения могут быть разных типов. Можно использовать Any или явно указать тип, например Map<String, Any>.
Перебор элементов:
user.forEach { key, value ->
println("$key: $value")
}
Изменяемые коллекции
Для добавления элементов после создания используется mutableListOf() для списков:
val itemsMutableList = mutableListOf(5,7,12)
itemsMutableList.add(10)
И mutableMapOf() или метод put() для карт:
val mutableUser = mutableMapOf(
"name" to "Bob",
"age" to 1,
"isHisCar" to true
)
mutableUser["city"] = "New York"
Передача коллекций в функции
Коллекции передаются как параметры функций:
fun printArray(items: List<Any>) {
items.forEach { println(it) }
}
printArray(itemsList)
printArray(user) //Для работы с map необходим тип Any
В этом уроке рассмотрены способы работы с массивами и списками в Kotlin, включая создание, доступ к элементам, перебор и добавление элементов. Выбор типа данных зависит от задачи.