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]!! }) }