Kotlin - Liste dans une Liste de filtrage
J'ai ces classes de données:
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>)
Je veux filtrer la liste des RouteType par type et filtrer la liste des RouteItem par id.
Mon code maintenant:
//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]!! }
}
Comment faire .map
retour liste avec liste filtrée-t-il? Ou peut-être il ya une autre façon?
MODIFIER
Merci, mais flatmap
pas exactement ce dont j'ai besoin, je pense. flatmap
renvoie la liste imbriquée(List<RouteItem>
), mais je veux List<RouteType>
.
Je l'ai eu par ce code:
val result = routeTypes
.filter { it.type in filter.keys }
.map {
routeType -> RouteType(
routeType.type,
routeType.items.filter { it.id in filter[routeType.type]!! })
}
Est-il une autre façon de l'obtenir?
- flatMap() ce que vous recherchez?
InformationsquelleAutor Michael | 2016-04-13
Vous devez vous connecter pour publier un commentaire.
Vos données est immuable (qui est une bonne chose), vous devez le copier alors que le filtrage. Utilisation
copy
pour le rendre plus extensible:it
partout. Pour moi, c'est bien ici, mais n'hésitez pas à indiquer des noms comme vous le voyez équipéeVous pouvez utiliser flatMap pour cela, il fonctionne comme une carte, mais fusionne tous vos cartographié des collections à la une:
Je suppose que, de la création d'un nouvel objet dans
.map
est la seule façon de l'obtenir.