如何使用 kotlin 中列表对象的属性创建列表

Orl*_*l13 11 kotlin

假设有一个Person具有属性的类name,并且age有一个persons包含 n 个 person 对象的列表。persons除此之外,还有其他更有效的方法从列表中创建年龄列表吗:

val age_list= ArrayList<Int>()
for(person in persons){
    age_list.add(person.getAge())
}
Run Code Online (Sandbox Code Playgroud)

End*_*eit 21

您可以简单地将一个列表映射到另一个列表。

val ageList = persons.map { it.age }
Run Code Online (Sandbox Code Playgroud)

您还可以用函数引用替换显式 lambda。

val ageList = persons.map(Person::age)
Run Code Online (Sandbox Code Playgroud)

如果您需要有一个ArrayList<Int>as 结果,您可以使用该mapTo函数映射到 anArrayList<Int>而不是默认的List<Int>.

val ageList = persons.mapTo(arrayListOf()) { it.age }
Run Code Online (Sandbox Code Playgroud)

这假设您有一个数据集:

data class Person(val name: String, val age: Int)

val persons = listOf(
    Person("Pete", 31),
    Person("Luna", 19),
    Person("Hendrick", 45),
)
Run Code Online (Sandbox Code Playgroud)