初始化这个 kotlin 列表的更惯用的方法?
More idiomatic way to initialize this kotlin list?
我想要一个不可变的列表,因为我真的不需要可变性,所以它可能只会导致错误。但是,该列表是在 class 级别声明的 lateinit var
。
我想最初用循环中的值填充列表,有点像这样:
for (items in someOtherCollection) {
val itemToAdd = doSomeProcessingOnThisData()
list.add(itemToAdd)
}
但是,由于列表是不可变的,我不能调用 add()
。有没有更好的方法来初始化这样的列表,而不是简单地将所有值添加到第二个可变列表,然后将其分配给不可变列表?
我目前的解决方案是这样的,但它似乎效率低下:
val tmpList = mutableListOf<Data>()
foos.forEach() {
val itemToAdd = doSomeProcessing()
foos.add(itemToAdd)
}
this.list = tmpList
如果你想创建一个新列表来处理另一个集合中的一些数据,试试这个:
this.list = someOtherCollection.map {
doSomeProcessing()
}
阅读本文以便更好地理解:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/map.html
我想要一个不可变的列表,因为我真的不需要可变性,所以它可能只会导致错误。但是,该列表是在 class 级别声明的 lateinit var
。
我想最初用循环中的值填充列表,有点像这样:
for (items in someOtherCollection) {
val itemToAdd = doSomeProcessingOnThisData()
list.add(itemToAdd)
}
但是,由于列表是不可变的,我不能调用 add()
。有没有更好的方法来初始化这样的列表,而不是简单地将所有值添加到第二个可变列表,然后将其分配给不可变列表?
我目前的解决方案是这样的,但它似乎效率低下:
val tmpList = mutableListOf<Data>()
foos.forEach() {
val itemToAdd = doSomeProcessing()
foos.add(itemToAdd)
}
this.list = tmpList
如果你想创建一个新列表来处理另一个集合中的一些数据,试试这个:
this.list = someOtherCollection.map {
doSomeProcessing()
}
阅读本文以便更好地理解:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/map.html