代码之家  ›  专栏  ›  技术社区  ›  Bassinator

更惯用的方法来初始化这个Kotlin列表?

  •  0
  • Bassinator  · 技术社区  · 6 年前

    我想有一个不变的列表,因为我不需要易变性,所以它可能只会导致错误。但是,列表是 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 回复  |  直到 6 年前
        1
  •  3
  •   DAA    6 年前

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

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

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