Collections 如何按元素将一个集合转换为另一个集合';谁的财产?

Collections 如何按元素将一个集合转换为另一个集合';谁的财产?,collections,filter,kotlin,Collections,Filter,Kotlin,如果我在Kotlin中有一个对象的集合,有没有一种快速的方法来获取这些对象的某个属性的集合?我看了一份清单,但没有什么能突出我(但我可能忽略了一些东西) 在python中,它类似于: [person.name代表人物中的人物] 我更喜欢使用collections函数,而不是执行以下操作: var nameMap = mutableListOf<String>() persons.forEach{person -> nameMap.add(person.name)} var n

如果我在Kotlin中有一个对象的集合,有没有一种快速的方法来获取这些对象的某个属性的集合?我看了一份清单,但没有什么能突出我(但我可能忽略了一些东西)

在python中,它类似于:

[person.name代表人物中的人物]

我更喜欢使用collections函数,而不是执行以下操作:

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

我对过滤/lambda函数以及列表理解以外的任何知识都非常缺乏,因此,如果这是一个简单的问题,我深表歉意,在Kotlin中很容易做到:

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


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

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

选项1:

inline fun <reified T, Y> MutableList<T>.listOfField(property: KMutableProperty1<T, Y?>): MutableList<Y> {
    val yy = ArrayList<Y>()
    this.forEach { t: T ->
        yy.add(property.get(t) as Y)
    }
    return yy
}
var serviceIds: MutableList<String> = services.map { it.id }.toMutableList()
选项2:

inline fun <reified T, Y> MutableList<T>.listOfField(property: KMutableProperty1<T, Y?>): MutableList<Y> {
    val yy = ArrayList<Y>()
    this.forEach { t: T ->
        yy.add(property.get(t) as Y)
    }
    return yy
}
var serviceIds: MutableList<String> = services.map { it.id }.toMutableList()

为什么是可变列表?@marstran因为你的问题定义为
MutableList
这不是我的问题。而且,他没有在任何地方指定可变列表。他只是在他的变通方法中使用了它。@Parker你可以在这里看到更多细节:。@Pavlus hi,但他没有说他不想进一步操作列表。因此,我提供了两种列表类型。
var serviceIds: MutableList<String> = services.map { it.id }.toMutableList()
var serviceIds = services.map(Person::id)