首页 > 解决方案 > 列表中的 Kotlin 过滤器列表

问题描述

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

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

private fun filterForShop(
        list: MutableList<WidgetItem>
    ): List<WidgetItem> {
        val result = list.map {
            it.compList.filter { comp ->
                comp.id != "square"
            }
        }
    }

我的对象看起来像:

data class WidgetItem(
    val id: String,
    val title: String,
    val kind: String,
    val compList: List<CompItem>
) 

标签: kotlin

解决方案


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

private fun filterForShop(
    list: MutableList<WidgetItem>
): List<WidgetItem> = list.map {
    it.copy(compList = it.compList.filter { comp ->
        comp.id != "square"
    })
}

推荐阅读