Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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

like image 914
Parker Avatar asked Jun 24 '17 16:06

Parker


People also ask

How map function works in Kotlin?

Returns a list containing the results of applying the given transform function to each element in the original array. Returns a list containing the results of applying the given transform function to each element in the original collection.

What is Kotlin collect?

Collections in Kotlin are used to store group of related objects in a single unit. By using collection, we can store, retrieve manipulate and aggregate data.


1 Answers

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); 
like image 104
holi-java Avatar answered Nov 08 '22 01:11

holi-java