2017-06-24 32 views
2

如果我在Kotlin中有一个对象的集合,是否有一种快速方法来获取这些对象的某个属性的集合?我看着collection operations for Kotlin名单,但没有站出来为我(但我可能忽略了的东西)如何通过元素的属性将集合转换/转换为另一个集合?

在蟒蛇这将是类似于:

[person.name for person in persons]

我宁愿使用一个集合函数,而不是这样做的:

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

我很缺乏的过滤/ lambda函数知识和比列表理解其他任何东西,所以道歉,如果这是一个简单的问题

回答

5

很容易在科特林做到:使用function reference expression代替

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

OR

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

IF你想要一个不可改变的List,它可以如下简化

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

为什么可变列表? – marstran

+0

@marstran因为你的问题定义为'MutableList ' –

+0

这不是我的问题。另外,他没有在任何地方指定可变列表。他只是在他的解决方法中使用了它。 – marstran