我想从集合中获取某些元素来创建另一个元素。
示例我有一个从该对象创建的列表
Student (Id, Code, FirstName, LastName, Age, Birthday)`
我想从我的第一个包含某些字段示例
的新集合中创建一个新集合NewStudent(FirstName, LastName, Age)
我尝试使用map
,filter
,但我无法得到正确的结果。
答案 0 :(得分:4)
map
适用于这种情况:
data class Student(val id: Int, val code: String, val firstName: String, val lastName: String, val age: Int, val birthday: String)
data class NewStudent(val firstName: String, val lastName: String, val age: Int)
val students = listOf(
Student(1, "A", "1F", "1L", 11, "1/1/2000"),
Student(2, "B", "2F", "2L", 12, "1/2/2000"),
Student(3, "C", "3F", "3L", 13, "1/3/2000")
)
val newStudents = students.map { student ->
NewStudent(student.firstName, student.lastName, student.age)
}
答案 1 :(得分:2)
我同意kabuko,但想添加map
的替代用法:
destructure对象(data
类e.g.)甚至可以在lambda中传递,例如传递给map
的对象:
val newStudents = students.map { (_, _, fn, ln, age, _) ->
NewStudent(fn, ln, age)
}
underscores表示与映射无关的属性。这是一个更易读的解决方案。