2017-06-24 64 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