Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
List Kotlin-列表筛选中的列表_List_Lambda_Kotlin_Kotlin Android Extensions - Fatal编程技术网

List Kotlin-列表筛选中的列表

List Kotlin-列表筛选中的列表,list,lambda,kotlin,kotlin-android-extensions,List,Lambda,Kotlin,Kotlin Android Extensions,我有这些数据类: data class RouteType( @SerializedName("type") val type: String, @SerializedName("items") val items: List<RouteItem>) data class RouteItem( @SerializedName("id")

我有这些数据类:

data class RouteType(

            @SerializedName("type")
            val type: String,

            @SerializedName("items")
            val items: List<RouteItem>)


data class RouteItem(

            @SerializedName("id")
            val id: String,

            @SerializedName("route")
            private val route: List<DoubleArray>)

是否有其他方法获取它?

您可以使用flatMap进行此操作,它可以作为映射,但会将所有映射集合合并为一个:

val result = routeTypes  // List<RouteType>
                .filter { it.type in filter.keys }
                .flatMap {
                    routeType -> routeType.items.filter { it.id in filter[routeType.type]!! }
                }
val result=routeType//List
.filter{it.type in filter.keys}
.平面图{
routeType->routeType.items.filter{filter[routeType.type]中的it.id]
}

我想,在
.map
中创建一个新对象是获得它的唯一方法

val result = routeTypes
            .filter { it.type in filter.keys }
            .map {
                routeType -> RouteType(
                    routeType.type,
                    routeType.items.filter { it.id in filter[routeType.type]!! })
            }

因为您的数据是不可变的(这是一件好事),所以您需要在过滤时复制它。使用
copy
使其更具可扩展性:

val result = routeTypes
        .filter { it.type in filter.keys }
        .map { it.copy(items = it.items.filter { it.id in filter[routeType.type]!! }) }

这是你要找的吗?欢迎!不确定是否在任何地方都使用
it
。对我来说,这里很好,但请随意指定您认为合适的名称。在lambdas中,这里是什么“it”:
val result = routeTypes
            .filter { it.type in filter.keys }
            .map {
                routeType -> RouteType(
                    routeType.type,
                    routeType.items.filter { it.id in filter[routeType.type]!! })
            }
val result = routeTypes
        .filter { it.type in filter.keys }
        .map { it.copy(items = it.items.filter { it.id in filter[routeType.type]!! }) }