如何通过element的属性将集合转换/转换为另一个集合?

Par*_*ker 23 collections filter kotlin

如果我在Kotlin中有一个对象的集合,有没有一种快速的方法来获取这些对象的某个属性的集合?我查看了Kotlin收集操作列表,但没有什么能让我感到高兴(但我可能忽略了一些东西)

在python中它将类似于:

[person.name for person in persons]

而且我更喜欢使用集合函数而不是:

var nameMap = mutableListOf<String>()
persons.forEach{person -> nameMap.add(person.name)}
Run Code Online (Sandbox Code Playgroud)

我非常缺乏过滤/ lambda函数以及除列表理解之外的任何知识,所以如果这是一个简单的问题就道歉

hol*_*ava 55

在Kotlin很容易做到:

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

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

//           v--- the variable type can be removed
var nameMap: List<String> = persons.map { it.name };
Run Code Online (Sandbox Code Playgroud)

或者使用函数引用表达式:

var nameMap = persons.map(Person::name);
Run Code Online (Sandbox Code Playgroud)

  • @Pavlus嗨,但他没有说他不想进一步操作**列表**.所以我提供了2种列表类型. (2认同)

Khe*_*raj 17

如果要映射模型,请执行此操作。

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