Хотя другие ответы показывают решение вашей проблемы, мне кажется, что Map<String, User>
может лучше соответствовать цели, например:
val usersByid = unsorted.associateBy { it.id }
val result = sorted.mapNotNull {
usersById[it]
}
Я предполагаю, что каждый идентификатор только один раз всписок, поэтому я использовал associateBy
. В противном случае это не было бы для меня идентификатором; -)
Основное различие между этим решением и другими заключается в том, что это решение возвращает только те записи, которые также есть в sorted
-листе. Обратите внимание, что если у вас есть пользователи, для которых у вас нет идентификатора в списке sorted
, это решение пропускает их, в то время как другие решения помещают эти записи в начало списка. Зависит от того, что вы действительно хотите.
Возможно, это решение более эффективно, чем другие. Доступ к Map
должен быть намного быстрее, чем повторять все записи снова и снова (что в основном делают indexOf
и first
).