使用主要排序集合的字段对次要集合进行排序

has*_*rix 6 sorting collections android match kotlin

我有一个未排序的用户列表和一个已排序的用户ID列表。id是一个字符串。我想按第二个排序第一列表。如何在Kotlin中做到这一点?

data class User(val name : String, val id : String)

val unsorted = listOf<User>(
    User("Max", "b12s11"),
    User("Joe", "dj1232"),
    User("Sam", "23d112"),
    User("Tom", "k213i1")
)

val sorted = listOf<String>(
    "dj1232",
    "b12s11",
    "k213i1",
    "23d112"
)

//  what I need
val result = listOf<User>(
    User("Joe", "dj1232"),
    User("Max", "b12s11"),
    User("Tom", "k213i1"),
    User("Sam", "23d112")
)
Run Code Online (Sandbox Code Playgroud)

And*_*ana 4

更短的解决方案:

val result = unsorted.sortedBy { sorted.indexOf(it.id) }
Run Code Online (Sandbox Code Playgroud)