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 + " ")

 


Связанные темы