Инициализировать массив LongArray в Котлине - PullRequest
0 голосов
/ 12 февраля 2019

Я хотел создать двумерный массив, размер которого мне известен в время выполнения

Я объявил и массив LongArray, как показано ниже

private lateinit var optionalGroup: Array<LongArray>

И я могу присвоить ему значение, как показано ниже, где group - это мой Mutable Map

 group.forEach { (key, value) -> optionalGroup[key - 1] = LongArray(value) }

Мой вопрос: как я могу инициализировать AdditionalGroup с размером группы?Я пытался

`optionalGroup = Array(group.size)

thows error Нет значения для параметра 'init'`

1 Ответ

0 голосов
/ 12 февраля 2019

Если вы используете массив, у вас нет выбора, кроме как инициализировать начальные значения каждого элемента

optionalGroup = Array(group.size) { LongArray(0) }

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

private lateinit var optionalGroup: MutableList<LongArray>
optionalGroup = mutableListOf()

Если это не вариант, вы все равно можете использовать временный изменяемый список и преобразовать его обратно в типизированный массив:

val tempList = mutableListOf<LongArray>()
group.forEach { (key, value) -> tempList[key - 1] = LongArray(value) }
optionalGroup = tempList.toTypedArray()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...