How to convert/transform a collection to another collection by element's property?

心不动则不痛 提交于 2020-08-17 23:51:23

问题


If I have a collection of an object in Kotlin, is there a quick way to get a collection of a certain property of those objects? I looked at a list of collection operations for Kotlin, but nothing stood out for me (but I may have overlooked something)

In python it would be akin to:

[person.name for person in persons]

And I'd prefer to use a collections function instead of doing:

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

I'm pretty lacking in knowledge of filtering/lambda functions and anything other than list comprehension, so apologies if this is a simple question


回答1:


it's easy to do in Kotlin:

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

IF you want an immutable List, it can simplify as below:

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

OR using function reference expression instead:

var nameMap = persons.map(Person::name);



回答2:


If you want to map model then do this.

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


来源:https://stackoverflow.com/questions/44738319/how-to-convert-transform-a-collection-to-another-collection-by-elements-propert

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!