Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 如何将每个项目都有一个列表的项目列表展开?_Kotlin_Collections_Flatten - Fatal编程技术网

Kotlin 如何将每个项目都有一个列表的项目列表展开?

Kotlin 如何将每个项目都有一个列表的项目列表展开?,kotlin,collections,flatten,Kotlin,Collections,Flatten,如果我有这样的东西: data class BaseItem { val id: Int val itemName: String val type: String val relatedItems: List<BaseItem>? } list.flatMap { item -> mutableListOf(item).apply { item.relatedItems?.let(::addAll) } } 数据类基本项{

如果我有这样的东西:

data class BaseItem {
  val id: Int
  val itemName: String
  val type: String
  val relatedItems: List<BaseItem>?
}
list.flatMap { item ->
    mutableListOf(item).apply {
        item.relatedItems?.let(::addAll)
    }
}
数据类基本项{
val id:Int
val itemName:String
val类型:String
val相关项目:列表?
}

如果我有一个
列表
,我如何使用flat/map等创建一个新的
列表
,其中包含每个
基本项
的条目,然后是
子组中的所有项

您可以这样做:

data class BaseItem {
  val id: Int
  val itemName: String
  val type: String
  val relatedItems: List<BaseItem>?
}
list.flatMap { item ->
    mutableListOf(item).apply {
        item.relatedItems?.let(::addAll)
    }
}

在这种方法中,如何动态更改
item
的成员变量?例如,在执行
mutableListOf(item)
时,我希望有一个标志true,而
let(::addAll)
应该将该标志设为false,因为您使用的是一个数据类,您可以执行
mutableListOf(item.copy(flag=true))
这样就可以了!但如果我理解了这一点,它会为每个
项创建一个新的
ArrayList
。有没有更有效的方法?