Any clever/efficient way to sort a list of objects according to another list of ordered values of a specific field?

In other words, I have a list of “id” values:

val ids = listOf(3, 4, 2, 9, 1)

and a list of objects (pseudo code):

val list = listOf(o1: {id: 9}, o2: {id: 2}, o3: {id: 1}, o4: {id: 4}, o5: {id: 3})

and I want to sort the object list such that the order of the id fields corresponds to the first list, like:

val sortedList = listOf(o5, o4, o2, o1, o3)

i.e.,

sortedList.map { it.id } == ids

.

Anything cute in the standard library to accomplish this without a lot of fuss?

submitted by /u/ragnese
[link] [comments]