Kotlin в IntelliJ IDEA Kotlin змінні Kotlin типи даних Kotlin операції з числами Kotlin умовні вирази Kotlin умовні конструкції Kotlin цикли Kotlin послідовності Kotlin масиви Kotlin функціональне програмування Kotlin змінна кількість параметрів. Vararg Kotlin повернення результату. оператор return Kotlin однорядкові і локальні функції Kotlin перевантаження функцій Kotlin Лямбда-вирази Kotlin функції вищого порядку Kotlin Анонімні функції Kotlin ООП Класи і об'єкти Kotlin ООП властивості Kotlin ООП конструктор Kotlin ООП функції в класах Kotlin ООП Пакети та імпорт Kotlin ООП модифікатори видимості Kotlin ООП вкладені класи Kotlin ООП інтерфейси Kotlin ООП спадкування Kotlin ООП Перевизначення методів і властивостей Kotlin ООП Абстрактні класи та методи Kotlin ООП Data-класи Kotlin ООП перерахування enums Kotlin ООП Null і nullable-типи Kotlin ООП Обробка винятків Kotlin ООП перетворення типів Kotlin ООП Інфіксна функція Kotlin ООП функції розширення Kotlin ООП Узагальнені класи і функції Kotlin ООП обмеження узагальнень Kotlin ООП Варіантність, коваріантність і контраваріантність Kotlin Колекції. Змінювані і незмінні колекції Kotlin Колекції. LIST список Kotlin Колекції. Set Kotlin Колекції. Map

Kotlin масиви


Масив являє набір даних одного типу. У мові Kotlin масиви представлені типом Array .

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

val numbers: Array<Int>

За допомогою вбудованої функції arrayOf () можна передати набір значень, які будуть складати масив:

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

Тобто в даному випадку в масиві 5 чисел від 1 до 5.

За допомогою індексів ми можемо звернутися до певного елементу в масиві. Індексація починається з нуля, тобто перший елемент буде мати індекс 0. Індекс вказується в квадратних дужках:

val numbers: Array<Int> = arrayOf(1, 2, 3, 4, 5)
val n = numbers[1]  // получаем второй элемент  n=2
numbers[2] = 7      // переустанавливаем третий элемент

Також форматувати масив значеннями можна в такий спосіб:

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

Тут застосовується конструктор класу Array. В цей конструктор передаються два параметри. Перший параметр вказує, скільки елементів буде в масиві. В даному випадку 3 елементи. Другий параметр представляє вираз, яке генерує елементи масиву. Воно полягає в фігурні дужки. В даному випадку в фігурних дужках стоїть число 5, то є всі елементи масиву будуть представляти число 5. Таким чином, масив буде складатися з трьох п'ятірок.

Для спрощення створення масиву в 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})

Як і у випадку з послідовністю ми можемо перевірити наявність або відсутність елементів в масиві за допомогою операторів in і ! In :

val numbers: Array<Int> = arrayOf(1, 2, 3, 4, 5)
 
println(4 in numbers)       // true
println(2 !in numbers)      // false

двомірні масиви

Вище розглядалися одномірні масиви, які можна представити у вигляді ряду або рядки значень. Але крім того, ми можемо використовувати багатовимірні масиви. Наприклад, візьмемо двомірний масив - тобто такий масив, кожен елемент якого в свою чергу сам є масивом. Двомірний масив ще можна представити у вигляді таблиці, де кожен рядок - це окремий масив, а осередки рядка - це елементи вкладеного масиву.

Визначення двомірних масивів менш інтуїтивно зрозуміло і може викликати складності. Наприклад, двомірний масив чисел:

val table: Array<Array<Int>> = Array(3, { Array(5, {0}) })

В даному випадку двомірний масив буде мати три елементи - три рядки. Кожен рядок буде мати по п'ять елементів, кожен з яких дорівнює 0.

Використовуючи індекси, можна звертатися до подмассіви в подібному масиві, в тому числі встановлювати заново їх значення:

val table = Array(3, { Array(3, {0}) })
table[0] = arrayOf(1, 2, 3)
table[1] = arrayOf(4, 5, 6)
table[2] = arrayOf(7, 8, 9)

Для звернення до елементів подмассивов двомірного масиву необхідні два індексу. По першому індексу йде отримання рядки, а по другому індексу - стовпці в рамках цього рядка:

val table = Array(3, { Array(3, {0}) })
table[0][1] = 6  // второй элемент первой строки
val n = table[0][1]     // n = 6

перебір масивів

Для перебору масивів застосовується цикл for:

val phones: Array<String> = arrayOf("Galaxy S8", "iPhone X", "Motorola C350")
for(phone in phones){
    println(phone)
}

В даному випадку змінна phones представляє масив рядків. При переборі цього масиву в циклі кожен його елемент виявляється в змінної phone. Консольний висновок програми:

fun main(args: Array<String>) {
 
    val table: Array<Array<Int>> = Array(3, { Array(3, {0}) })
    table[0] = arrayOf(1, 2, 3)
    table[1] = arrayOf(4, 5, 6)
    table[2] = arrayOf(7, 8, 9)
    for(row in table){
 
        for(cell in row){
            print("$cell \t")
        }
        println()
    }
}

За допомогою зовнішнього циклу for(row in table) пробігає по всіх елементах двомірного масиву, тобто по рядках таблиці. Кожен з елементів двомірного масиву сам представляє масив, тому ми можемо пробігтися по цього масиву і отримати з нього безпосередньо ті значення, які в ньому зберігаються. У підсумку на консоль буде виведено наступне:

1 2 3 	
4 5 6 	
7 8 9

Наш партнер:
beta test mp3 playlist downloader