У меня есть список из трех наборов значений, которые связаны друг с другом. т. е. регистрационный номер, имя учащегося и название школы.
Я использую Kotlin Тройной для их хранения. Ниже приведен код:
val studentData = listOf(
Triple(first = "1", second = "Sam", third = "MIT"),
Triple(first = "2", second = "Johnny", third = "SYM"),
Triple(first = "3", second = "Depp", third = "PIT")
)
И теперь мне нужно создать функцию, которая будет принимать номер списка и возвращать либо имя ученика, либо название школы. Что-то вроде ниже:
fun getStudentDetails(rollNumber: String) : String {
//...
//return student name or school name
}
Как этого добиться?
Как пройти Triple
в наиболее предварительном формате, учитывая ниже:
а) временная и пространственная сложность
б) список сведений о студенте может стать большим
Учитывая, что rollNumber
— это String
, вы можете просто отфильтровать список, используя firstOrNull
, и вернуть имя ученика или название школы:
fun getStudentDetails(rollNumber: String) : String =
studentData.firstOrNull({ (roll, _, _) ->
roll == rollNumber
})?.second ?: "No student with $rollNumber"
Пространственная сложность будет постоянной, временная сложность будет O(n) в худшем случае.
Есть ли причина, по которой вы использовали бы здесь Triple? почему бы не использовать класс данных и/или хэш-карту вместо списка? Это уменьшит количество поисковых запросов, что, по-видимому, вас больше всего беспокоит.