Ведение в массивы

Последнее обновление: 04.03.2024

Для хранения набора значений в Kotlin, как и в других языках программирования, можно использовать массивы. При этом массив может хранить данные только одного того же типа. В Kotlin массивы представлены типом Array.

При определении массива после типа Array в угловых скобках необходимо указать, объекты какого типа могут храниться в массиве. Например, определим массив целых чисел:

val numbers: Array<Int>

С помощью встроенной функции arrayOf() можно передать набор значений, которые будут составлять массив:

val numbers: Array<Int> = arrayOf(1, 2, 3, 4, 5)

То есть в данном случае в массиве 5 чисел от 1 до 5.

Также можно использовать неявную типизацию и сразу передать набор значений массива:

val numbers = arrayOf(1, 2, 3, 4, 5)

В этом случае тип элементов массива будет выводиться из типа значений из функции arrayOf()

Но что, если мы хотим создать массив, элементы которого будут не установлены (например, мы изначально не знаем, что это будут за элементы)? В этом случае для создания массива мы можем использовать встроенную функцию arrayOfNulls(). ОНа создает массив из элементов, каждый из который имеет значение null - то есть фактически не установленное значение. В эту функцию передается количество элементов:

val numbers = arrayOfNulls<Int>(3)  // [null, null, null]

После названия функции в угловых скобках указывается тип элементов массива. Так, в примере выше это тип Int. В данном случае создается массив из трех элементов, каждый из которых равен по умолчанию null, то есть не имеет никакого значения.

Также имеются один способо создать массив и инициализировать его значениями:

val numbers = Array(3, {5})	// [5, 5, 5]

Здесь применяется конструктор класса Array. В этот конструктор передаются два значения. Первое значение - число 3 - указывает, сколько элементов будет в массиве. В данном случае 3 элемента. Второе значение - число 5 представляет выражение, которое генерирует элементы массива. Оно заключается в фигурные скобки. В данном случае в фигурных скобках стоит число 5, то есть все элементы массива будут представлять число 5. Таким образом, массив будет состоять из трех пятерок.

Но выражение, которое создает элементы массива, может быть и более сложным. Например:

var i = 1;
val numbers = Array(3, { i++ * 2}) // [2, 4, 6]

В данном случае элемент массива является результатом умножения переменной i на 2. При этом при каждом обращении к переменой i ее значение увеличивается на единицу.

Обращение к элементам массива

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

val numbers = arrayOf(1, 2, 3, 4, 5)
val n = numbers[1]  // получаем второй элемент  n=2
println(n)
numbers[2] = 7      // переустанавливаем третий элемент
println("numbers[2] = ${numbers[2]}") // numbers[2] = 7

Размер массива

Каждый массив имеет свойство size, которое хранит количество элементов массива:

fun main(){

    val numbers  = arrayOf(1, 2, 3, 4, 5);
    println(numbers.size)   // 5

    val people = arrayOf("Tom", "Bob", "Sam")
    println(people.size)   // 3
}

Перебор массивов

Для перебора массивов можно применять цикл for:

fun main() {

    val numbers = arrayOf(1, 2, 3, 4, 5)
    for(number in numbers){
        print("$number \t")
    }
}

В данном случае переменная numbers представляет массив чисел. При переборе этого массива в цикле каждый его элемент оказывается в переменной number, значение которой, к примеру, можно вывести на консоль. Консольный вывод программы:

1  2  3  4  5

Подобным образом можно перебирать массивы и других типов:

fun main() {

    val people = arrayOf("Tom", "Sam", "Bob")
    for(person in people){
        print("$person \t")
    }
}

Консольный вывод программы:

Tom   Sam   Bob

Проверка наличия элемента в массиве

Как и в случае с последовательностью мы можем проверить наличие или отсутствие элементов в массиве с помощью операторов in и !in:

val numbers = arrayOf(1, 2, 3, 4, 5)

println(4 in numbers)       // true
println(2 !in numbers)      // false

Массивы для базовых типов

Для упрощения создания массива в Kotlin определены дополнительные типы BooleanArray, ByteArray, ShortArray, IntArray, LongArray, CharArray, FloatArray и DoubleArray, которые позволяют создавать массивы для определенных типов. Например, тип IntArray позволяет определить массив объектов Int, а DoubleArray - массив объектов Double:

val numbers: IntArray = intArrayOf(1, 2, 3, 4, 5)
val doubles: DoubleArray = doubleArrayOf(2.4, 4.5, 1.2)

Для определения данных для этих массивов можно применять функции, которые начинаются на название типа в нижнем регистре, например, int, и затем идет ArrayOf.

Аналогично для инициализации подобных массивов также можно применять конструктор соответствуюшего класса:

val numbers = IntArray(3, {5})
val doubles = DoubleArray(3, {1.5})
===================
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850