Kotlin. Клас Array. Призначення. Масиви даних

Клас Array. Призначення. Масиви даних. Способи створення масиву


Зміст


Пошук на інших ресурсах:

1. Масив. Клас Array. Способи створення масиву

У мові Kotlin масиви представлені класом Array. Щоб оголосити масив, потрібно вказати його тип в якості параметру між парою символів <>

var ArrayName : Array<T>

тут

  • ArrayName – ім’я масиву;
  • T – тип елементів масиву (Int, Double, String, Char та інші).

Щоб створити масив типу Array<T> потрібно використати один з наступних способів:

  • викликати метод arrayOf(). Цей метод створює масив з елементами вказаного типу;
  • використати конструктор класу Array на основі заданого лямбда-виразу;
  • використати метод arrayOfNulls(). Цей метод створює масив заданого розміру, де всі елементи рівні null.

 

2. Способи створення масиву типу Array
2.1. Використання методу arrayOf()

Метод arrayOf() створює масив заданого типу. У найбільш загальному випадку використання методу в програмі для створення масиву може мати декілька варіантів реалізації

// Створити масив на основі переліку елементів
val arrName1 = arrayOf(vararg elements : T)
val arrName3 = arrayOf(vararg elements : T)

// Створити пустий масив
var arrName2 = arrayOf()
var arrName4 = arrayOf()

тут

  • arrName1, arrName2, arrName3, arrName4 – назви масивів, що створюються;
  • T – тип елементів масиву;
  • elements – перелік елементів масиву, розділених символом ‘ , ‘ (кома).

Якщо при виклику методу arrayOf() не вказано параметрів, то створюється пустий масив.

Ключові слова var та val мають відношення до змінних arrName1, arrName2, arrName3, arrName4. Ключове слово val передбачає одноразове створення масиву, що зв’язаний зі змінною. Ключове слово var визначає, що масив може бути створений заново, наприклад

// Оголошення масиву як var-масиву
var arrayName : Array<T> = ...

// Повторне використання імені arrayName для масиву
arrayName = ...

 

2.1.1. Створення та заповнення масиву чисел типу Int

 

// Створення масиву. Метод arrayOf()
// Створити пустий масив цілих чисел та заповнити його.
// 1. Оголосити змінну типу Array<Int>
var AI : Array<Int>

// 2. Створити пустий масив
AI = arrayOf()

// 3. Заповнити масив числами: [ 2, 4, 6, ..., 20 ]
for (i in IntRange(2, 20) step 2)
   AI += i

// 4. Вивести масив
for (i in AI)
   print(i.toString() + " ")

 

2.1.2. Створення та заповнення масиву рядків типу String

У даному прикладі використовується форма заповнення рядків безпосередньо в методі arrayOf().

// Створення масиву. Метод arrayOf()
// 1.Створити масив рядків, що містить назви днів тижня
var AS : Array<String> = arrayOf("Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thirsday",
"Friday",
"Saturday"
)

// 2. Вивести назви днів тижня в стовпчик
for (s in AS)
   println(s)

 

2.1.3. Створення та заповнення масиву чисел типу Double

У прикладі використовується реалізація методу arrayOf(), яка отримує перелік значень масиву у вигляді параметру.

// Створення масиву. Метод arrayOf()
// 1.Створити масив чисел типу Double
var AD : Array<Double> = arrayOf(2.8, 3.5, -1.4, 9.2)

// 2. Вивести масив чисел AD
for (x in AD)
   print(x.toString() + " ")

 

2.1.4. Створення масиву символів типу Char

У прикладі створюється масив AC, що містить перелік символів, що позначають число в шістнадцятковій системі числення:

  • цифри від ‘0’ до ‘9’;
  • букви латинського алфавіту ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’.
// Створення масиву. Метод arrayOf()
// 1.Створити масив символів типу Char:
//   [ '0', '1', '2', ..., '9', 'A', 'B', 'C', 'D', 'E', 'F' ]
var AC : Array<Char> = arrayOf()

// 2. Сформувати масив
// 2.1. Додати цифри
for (i in IntRange(0, 9))
   AC += ('0' + i).toChar()

// 2.2. Додати букви 'A', ..., 'F'
for (c in CharRange('A', 'F'))
   AC += c

// 3. Вивести масив чисел
for (c in AC)
   print(c + " ")

 

2.2. Використання конструктора Array

Конструктор класу Array отримує параметром лямбда-вираз. Цей лямбда-вираз заповнює значеннями елементи масиву.

У найбільш загальному випадку створення масиву класу Array з допомогою конструктора має вигляд:

var ArrayName = Array<T>(size) { lambda_expression }

тут

  • ArrayName – ім’я масиву, що створюється;
  • T – тип елементів масиву;
  • size – кількість елементів (розмір) у масиві;
  • lambda_expression – лямбда-вираз, який формує значення елементів масиву.

Перед оголошенням масиву можна використовувати ключове слово val

val ArrayName = Array<T>(size) { lambda_expression }

яке буде означати, що змінна-масив ArrayName не може бути застосоване для створення нового масиву. Спроба повторного створення нового масиву

ArrayName = ...

буде видавати помилку компіляції.

 

2.2.1. Сформувати масив чисел типу Double

 

// Використання конструктора класу Array.
// 1. Створити масив квадратів чисел від 0 до 9 типу Double.
//   При створенні масиву використовується лямбда-вираз
var AD = Array<Double>(10) { i -> (i*i).toDouble() }

// 2. Вивести масив AD
for (i in AD)
print(i.toString() + " ")
println()

 

2.2.2. Сформувати масив рядків типу String

 

// Використання конструктора класу Array для типу String
// 1. Сформувати масив пустих рядків типу String
val Days = Array<String>(7) { "" }

// 2. Записати значення в масив
Days[0] = "Sunday"
Days[1] = "Monday"
Days[2] = "Tuesday"
Days[3] = "Wednesday"
Days[4] = "Thirsday"
Days[5] = "Friday"
Days[6] = "Saturday"

// 3. Вивести масив рядків
for (day in Days)
  print(day + " ")

 

2.2.3. Сформувати масив логічних значень типу Boolean

 

// Використання конструктора класу Array для типу String
// 1. Сформувати масив логічних значень типу Boolean.
//   У масиві вихідні дні мають значення true
var DayOff = Array<Boolean>(7) { false }

// 2. Встановити вихідні дні
DayOff[5] = true
DayOff[6] = true

// 3. Вивести масив
for (d in DayOff)
  print(d.toString() + " ")

 

2.2.4. Сформувати масив символів типу Char

При формуванні масиву символів типу Char використовується лямбда-вираз.

// Створити масив символів, що містить прописні букви латинського алфавіту
var AC = Array<Char>(26) { c -> ('A' + c).toChar() }

// Вивести масив
for (i in AC)
  print(i + " ")

 

2.3. Використання методу arrayOfNulls()

Метод arrayOfNulls() дозволяє створити масив значень заданого типу і заданого розміру, який може містити значення null. Загальна форма оголошення масиву з використанням методу arrayOfNulls() наступна:

var arrayName : Array<T> = arrayOfNulls(size)

тут

  • arrayName – ім’я масиву, що створюється;
  • T – тип елементів масиву;
  • size – розмір масиву, який резервується.

Після оголошення масиву, його елементи мають значення null. Оголошення передбачає, що нульові значення елементів масиву в подальшому будуть змінені.

 

2.3.1. Створення масиву чисел типу Short

Створюється масив чисел типу Short. Кожне число визначає кількість днів у відповідному місяці року, номер якого є індексом масиву плюс 1.

// Метод arrayOfNulls() - створення масиву, що містить null-значення.
// Формується перелік днів у кожному місяці.

// 1. Створити масив з 12 елементів типу Short
val DayInMonths : Array<Short?> = arrayOfNulls(12)

// 2. Записати в масив дані місяців, у яких 31 день,
//   використати оператор when
for (i in IntRange(0, DayInMonths.size-1))
  DayInMonths[i] = when (i+1) {
    2 -> 28
    4, 6, 9, 11 -> 30
    else -> 31
  }

// 3. Вивести масив DayInMonths
for (d in DayInMonths)
  print(d.toString() + " ") // 31 28 31 30 31 30 31 31 30 31 30 31

 

2.3.2. Створення масиву константних значень типу Float

 

// Метод arrayOfNulls() - створення масиву, що містить null-значення
// 1. Створити масив значень типу Float
val Squares : Array<Float?>
Squares = arrayOfNulls(5)

// 2. Заповнити масив значеннями
var i : Int = 0

while (i < Squares.size) {
  Squares[i] = (i*i).toFloat()
  i++
}

// 3. Вивести масив Squares
for (x in Squares)
  print(x.toString() + " ")

 

2.3.3. Створення масиву рядків типу String

 

// Метод arrayOfNulls() - створення масиву, що містить null-значення
// 1. Створити масив рядків
var Seasons : Array<String?> = arrayOfNulls<String>(4)

// 2. Заповнити масив рядків значеннями
Seasons[0] = "Winter"
Seasons[1] = "Spring"
Seasons[2] = "Summer"
Seasons[3] = "Autumn"

// 3. Вивести масив рядків
for (s in Seasons)
  print(s + " ")

 


Споріднені теми