在Kotlin中初始化LongArray的数组

时间:2019-02-12 11:34:17

标签: data-structures kotlin

我基本上想创建2D数组,其大小在运行时

上为我所知

我有如下声明和LongArray数组

private lateinit var optionalGroup: Array<LongArray>

我可以如下为其分配值,其中 group 是我的Mutable Map

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

我的问题是如何初始化大小为group的optionalGroup?我尝试过

`optionalGroup = Array(group.size)
  

出现错误,没有传递参数'init'`的值

1 个答案:

答案 0 :(得分:2)

如果使用数组,则别无选择,只能初始化每个元素的初始值

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()