如何在 Kotlin 中迭代一个三元组
How to iterate over a Triple in Kotlin
我有三组相互关联的值的列表。即卷号、学生姓名和学校名称。
我正在使用 Kotlin Triple 来存储它们。
下面是代码:
val studentData = listOf(
Triple(first = "1", second ="Sam", third = "MIT"),
Triple(first = "2", second ="Johnny", third = "SYM"),
Triple(first = "3", second ="Depp", third = "PIT")
)
现在我需要构建一个函数,它将接受卷号并且 return 学生姓名或学校名称。如下所示:
fun getStudentDetails(rollNumber: String) : String {
//...
//return student name or school name
}
如何实现?
如何以最预格式化的方式遍历 Triple
考虑如下:
a) 时间和 space 复杂性
b) 学生详细信息列表可以变大
鉴于 rollNumber
是 String
您可以使用 firstOrNull
和 return 学生姓名或学校名称过滤列表:
fun getStudentDetails(rollNumber: String) : String =
studentData.firstOrNull({ (roll, _, _) ->
roll == rollNumber
})?.second ?: "No student with $rollNumber"
space复杂度是常数,最坏情况下时间复杂度为O(n)。
我有三组相互关联的值的列表。即卷号、学生姓名和学校名称。
我正在使用 Kotlin Triple 来存储它们。 下面是代码:
val studentData = listOf(
Triple(first = "1", second ="Sam", third = "MIT"),
Triple(first = "2", second ="Johnny", third = "SYM"),
Triple(first = "3", second ="Depp", third = "PIT")
)
现在我需要构建一个函数,它将接受卷号并且 return 学生姓名或学校名称。如下所示:
fun getStudentDetails(rollNumber: String) : String {
//...
//return student name or school name
}
如何实现?
如何以最预格式化的方式遍历 Triple
考虑如下:
a) 时间和 space 复杂性
b) 学生详细信息列表可以变大
鉴于 rollNumber
是 String
您可以使用 firstOrNull
和 return 学生姓名或学校名称过滤列表:
fun getStudentDetails(rollNumber: String) : String =
studentData.firstOrNull({ (roll, _, _) ->
roll == rollNumber
})?.second ?: "No student with $rollNumber"
space复杂度是常数,最坏情况下时间复杂度为O(n)。