列表中的Kotlin筛选器列表

列表中的Kotlin筛选器列表,kotlin,Kotlin,如何在尝试筛选嵌套列表时返回原始列表(或列表副本),我有以下方法: 如果使用.map,我将得到嵌套列表作为返回,如果使用flatMap,我将得到嵌套列表-->列表> private fun filterForShop( 列表:可变列表 ):列表{ val result=list.map{ it.compList.filter{comp-> 公司id!=“方形” } } } 我的对象看起来像: data class WidgetItem( val id: String, val

如何在尝试筛选嵌套列表时返回原始列表(或列表副本),我有以下方法:

如果使用.map,我将得到嵌套列表作为返回,如果使用flatMap,我将得到嵌套列表-->列表>

private fun filterForShop(
列表:可变列表
):列表{
val result=list.map{
it.compList.filter{comp->
公司id!=“方形”
}
}
}
我的对象看起来像:

data class WidgetItem(
    val id: String,
    val title: String,
    val kind: String,
    val compList: List<CompItem>
) 
数据类WidgetItem(
valid:String,
val标题:字符串,
val kind:字符串,
val compList:列表
) 
您可以使用
.allow()
执行操作,但保留原始上下文

private fun filterForShop(
        list: MutableList<WidgetItem>
    ): List<WidgetItem> =
        list.also {
            it.compList = it.compList
                .filter { comp ->
                    comp.id != "square"
                }
        }
private fun filterForShop(
列表:可变列表
):列表=
还有{
it.compList=it.compList
.filter{comp->
公司id!=“方形”
}
}

只有当
compList
可写时,这才起作用,但在本例中不是这样。 您需要按照@IR42的建议进行操作。

您可以使用
.allow()
执行操作,但保留原始上下文

private fun filterForShop(
        list: MutableList<WidgetItem>
    ): List<WidgetItem> =
        list.also {
            it.compList = it.compList
                .filter { comp ->
                    comp.id != "square"
                }
        }
private fun filterForShop(
列表:可变列表
):列表=
还有{
it.compList=it.compList
.filter{comp->
公司id!=“方形”
}
}

只有当
compList
可写时,这才起作用,但在本例中不是这样。
您需要按照@IR42的建议执行。

因为
compList
val
我们只能用新的
compList
值复制旧元素

private fun filterForShop(
    list: MutableList<WidgetItem>
): List<WidgetItem> = list.map {
    it.copy(compList = it.compList.filter { comp ->
        comp.id != "square"
    })
}
private fun filterForShop(
列表:可变列表
):List=List.map{
复制(compList=it.compList.filter{comp->
公司id!=“方形”
})
}

因为
compList
val
我们只能用新的
compList
值复制旧元素

private fun filterForShop(
    list: MutableList<WidgetItem>
): List<WidgetItem> = list.map {
    it.copy(compList = it.compList.filter { comp ->
        comp.id != "square"
    })
}
private fun filterForShop(
列表:可变列表
):List=List.map{
复制(compList=it.compList.filter{comp->
公司id!=“方形”
})
}

一个
CompItem
的外观如何?CompItem=>
数据类CompItem(val id:String,val title:String)
一个
CompItem
的外观如何?CompItem=>
数据类CompItem(val id:String,val title:String)