Mic*_*ael 7 lambda list kotlin kotlin-android-extensions
我有这些数据类:
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>)
Run Code Online (Sandbox Code Playgroud)
我想按类型过滤RouteType列表,并按ID过滤RouteItem列表.
我的代码现在:
// val filter: HashMap<String, List<String>>
val result = routeTypes // List<RouteType>
.filter { it.type in filter.keys }
.map {
routeType -> routeType.items.filter { it.id in filter[routeType.type]!! }
}
Run Code Online (Sandbox Code Playgroud)
如何.map使用过滤列表制作返回列表?或许还有另一种方式?
谢谢,但flatmap不完全是我需要的,我想.flatmap返回嵌套列表(List<RouteItem>),但我想要List<RouteType>.
我通过这段代码得到了它:
val result = routeTypes
.filter { it.type in filter.keys }
.map {
routeType -> RouteType(
routeType.type,
routeType.items.filter { it.id in filter[routeType.type]!! })
}
Run Code Online (Sandbox Code Playgroud)
有另一种方法可以得到它吗?
vod*_*dan 10
由于您的数据是不可变的(这是一件好事),您需要在过滤时复制它.使用copy使它更具扩展性:
val result = routeTypes
.filter { it.type in filter.keys }
.map { it.copy(items = it.items.filter { it.id in filter[routeType.type]!! }) }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15873 次 |
| 最近记录: |