在kotlin中创建另一个集合

时间:2018-01-10 23:27:36

标签: kotlin

我想从集合中获取某些元素来创建另一个元素。

示例我有一个从该对象创建的列表

Student (Id, Code, FirstName, LastName, Age, Birthday)` 

我想从我的第一个包含某些字段示例

的新集合中创建一个新集合
NewStudent(FirstName, LastName, Age)

我尝试使用mapfilter,但我无法得到正确的结果。

2 个答案:

答案 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对象(datae.g.)甚至可以在lambda中传递,例如传递给map的对象:

val newStudents = students.map { (_, _, fn, ln, age, _) ->
    NewStudent(fn, ln, age)
}

underscores表示与映射无关的属性。这是一个更易读的解决方案。