Масиви - це впорядкований набір однотипних даних певного розміру. В Kotlin масиви поділяються на два види. Один вид - це об'єктного типу масиви на основі класу Array та масиви примітивних типів. Нумерація елементів масиву в Kotlin починається з нуля. Одновимірні масиви Якщо говорити про перший вид масивів, то їх можна створити з допомогою конструктора класу Array або з допомогою функцій arrayOf(), arrayOfNulls() або emptyArray(). Тему конструкторів, класів та об'єктів детально розписана в розділі про об'єктно-орієнтоване програмування. Для початку достатньо прийняти до уваги, що є такий спосіб створення масивів. Робота з масивами незалежить від того як вони створювались.

Приклад створення з конструктором: val initArray: Array<Int> = Array<Int>(3) { 0 } //пустий масив з трьох елементів val numbersArray = Array(5) { index -> index } //заповнити масив значеннями індексів, тобто (0,1,2,3,4) val numberArray2: Array<Int> = Array(5){it} // те ж саме, що і попередній рядок Приклад створення масиву через функцію: var m = arrayOf(1, 2, 3, 2, 10) // оголошення масиву з п'ятьма числами типу Int

Робота з масивами в Kotlin здійснюється наступним чином: var myArray = arrayOf(1, 2, 3) // оголошення масиву з трьома числами типу Int println(myArray) // звернення до першого (нульового) елемента масиву println (myArray.size) // отримання розміру масива val myArray2=arrayOf<String>("Mariyka", "Pasha", "Kolya") // явне вказання типу масиву val myArray2: Array<String> = arrayOf("Mariyka", "Pasha", "Kolya")// можна також так вказувати тип Зверніть увагу, що після <String> в 5-му рядку ми ставимо пробіл, інакше компілятор видасть помилку про відсутність >

Звернення до масиву можна реалізувати двома способами: 1) з використанням квадратних дужок; 2) з використанням функцій get() та set(): val x:Array<Int>=arrayOf(1,3,5,6,3) // напис Array<Int> можна опустити println ("="+x.get(3)) // читаєм значення третьої комірки println ("="+x) //читаємо значення четвертої комірки x=10 //змінюємо значення другої комірки на 10 x.set(3, 8) // змінюємо значення третьої комірки на 8 println("Змінений масив: ${x.joinToString()}") // вивід значень масиву в один рядок

Рекомендованим є спосіб звернення через квадратні дужки.

Вивести вміст масиву на консоль можна так: val myArray2: Array<String> = arrayOf("Mariyka", "Pasha", "Kolya") println(myArray2.joinToString()) // Виведе: Mariyka, Pasha, Kolya println (myArray2.contentToString()) // Виведе: [Mariyka, Pasha, Kolya] Можна створити пустий масив з певної кількості елементів, наприклад: val myArray = Array(10) { "" } // масив з 10-ти елементів типу String, з пустими рядками val nullableArray = arrayOfNulls<String>(10) //String масив з невизначеними значеннями (null) val intArray = IntArray(10) //для цілих чисел можна так створити масив з десятьма нулями val intArray = Array(10) { 0 } // те ж саме цілочисельний масив з десятьма нулями Зверніть увагу на третій рядок. Всі базові (примітивні) типи мають свої реалізації масивів для ефективнішої роботи, тобто існує ByteArray, DoubleArray і т.п. Робота з ними дещо швидша. Так, масив цілих чисел типу IntArray можна задати так: val x:IntArray=intArrayOf(1,3,5,6,3) //IntArray Аналогічно працюємо і з іншими типами даних.

Якщо масив визначається не з допомогою ключового слова var, а з допомогою val, то створену змінну не можна буде перенаправити на інший масив. При цьому елементи масиву можна змінювати. Змінну масиву оголошену з var можна перенаправити на інший масив, але лише того ж типу, що і перший масив. Тобто, якщо початковий масив був Int, то можна перенаправити змінну лише на масив також Int типу.

Перебрати елементи масиву по порядку можна так: val myArray2: Array<String> = arrayOf("Mariyka", "Pasha", "Kolya", "Nastya", "Ніна") myArray2.forEach { println("Name: $it") // використовуємо ключове слово it }

Інший спосіб перебрати масиви - це цикли (див. розділ «Цикли»)

Багатовимірні масиви Двовимірний масив можна створити так: val matrix = arrayOf( arrayOf(1, 2, 3), arrayOf(4, 5, 6), arrayOf(7, 8, 9) ) Таким чином ми створили двовимірний масив (таблицю), де кожен внутрішній масив є рядком. Масив 3x4 з заповненням нулями можна створити так: val array = Array(3) { Array(4) { 0 } } Звернення до елементів двовимірного масиву: val element = matrix Рядки в двовимірному масиві, при потребі, можуть мати різну довжину.

Щоб отримати кількість рядків (перший вимір), використовуйте array.size. Щоб отримати кількість стовпців (другий вимір) у конкретному рядку, використовуйте array.size. Масиви з елементами змішаного типу В Kotlin можна створити масив з елементами змішаного типу використовуючи тип Any: val mixedTypeArray: Array<Array<Any>> = arrayOf( arrayOf("Ім'я", 25, true), arrayOf("Інше ім'я", 30, false) ) Звернення елементів відбувається як і у звичайному багатовимірному масиві за індексами: // Доступ до елементів println(mixedTypeArray) // Виведе: Ім'я println(mixedTypeArray) // Виведе: 25

Функції для роботи з масивами Існує ряд функцій для роботи з масивами. Наприклад функція sort() - для сортування масиву та shuffle() - для перемішування масиву. val simpleArray = arrayOf(8, 7, 5, 3, 2, 9)

// Сортування елементів simpleArray.sort() println(simpleArray.joinToString()) //2, 3, 5, 7, 8, 9

// перемішування елементів у випадаковому порядку simpleArray.shuffle() println(simpleArray.joinToString()) //3, 7, 9, 2, 5, 8

Масиви підтримують багато операцій як і колекції, включаючи ітерацію, пошук, сортування, трансформування. Детальніше дивись офіційну документацію Kotlin.

Джерела Масиви (оф. документація Kotlin) (англ)