初始化此Kotlin列表的更多惯用方式?

时间:2018-06-27 14:41:15

标签: list kotlin immutability idioms

我想有一个不可变的列表,因为我真的不需要可变性,因此它很可能会导致错误。但是,该列表是在类级别声明的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

1 个答案:

答案 0 :(得分:3)

如果您要创建一个新列表来处理另一个集合中的某些数据,请尝试以下操作:

this.list = someOtherCollection.map {
    doSomeProcessing()
}

请阅读以下内容以更好地理解:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/map.html