web-dev-qa-db-fra.com

Comment convertir / transformer une collection en une autre collection par propriété d'élément?

Si j'ai une collection d'un objet dans Kotlin, existe-t-il un moyen rapide d'obtenir une collection d'une certaine propriété de ces objets? J'ai regardé une liste de opérations de collecte pour Kotlin , mais rien ne se démarquait pour moi (mais j'ai peut-être oublié quelque chose)

En python cela reviendrait à:

[person.name for person in persons]

Et je préfère utiliser une fonction de collections au lieu de faire:

var nameMap = mutableListOf<String>()
persons.forEach{person -> nameMap.add(person.name)}

Je manque assez de connaissances sur les fonctions de filtrage/lambda et rien d'autre que la compréhension de la liste, donc excuses si c'est une question simple

18
Parker

c'est facile à faire à Kotlin:

//           v--- the variable type can be removed
var nameMap: MutableList<String> = persons.map { it.name }.toMutableList();

[~ # ~] si [~ # ~] vous voulez un List immuable, il peut simplifier comme ci-dessous:

//           v--- the variable type can be removed
var nameMap: List<String> = persons.map { it.name };

[~ # ~] ou [~ # ~] en utilisant expression de référence de fonction à la place:

var nameMap = persons.map(Person::name);
50
holi-java

Si vous souhaitez mapper le modèle, faites-le.

var nameMap: List<Model> = persons.map { Model(it.name,it.number) };
14
Khemraj