I have these data classes:
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>)
I want to filter the RouteType list by type and list of RouteItem filters in it by id.
My code is:
// 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]!! } }
How to make a .map return list with a filtered list in it? Or maybe there is another way?
EDIT
Thank you, but flatmap not exactly what I need, I think. flatmap returns a nested list ( List<RouteItem> ), but I want List<RouteType> .
I got it by this code:
val result = routeTypes .filter { it.type in filter.keys } .map { routeType -> RouteType( routeType.type, routeType.items.filter { it.id in filter[routeType.type]!! }) }
Is there any other way to get it?
source share