Mah*_*iya 2 sorting list kotlin
String我有以下清单:-
val a = listOf("G", "F", "E", "D", "C", "B", "A")
Run Code Online (Sandbox Code Playgroud)
我将从服务器获取另一个列表。例如:-
val b = listOf("A", "G", "C")
Run Code Online (Sandbox Code Playgroud)
来自服务器的列表可能包含更少或更多元素,但不会包含除第一个列表之外的元素。
所以,排序后输出应该是这样的
// G、C、A
你不是在尝试排序,而是在尝试过滤
fun filterByServer(server: List<String>, local: List<String>)
= local.filter { value -> server.contains(value) }
Run Code Online (Sandbox Code Playgroud)
filter如果您的本地值包含在服务器列表中,则在这种情况下采用谓词
您可以在没有重复的情况下轻松使用map和来实现 -sorteda
val a = listOf("G", "F", "E", "D", "C", "B", "A")
val b = listOf("A", "G", "C")
val there = b.map{ v -> a.indexOf(v)}.sorted().map{v -> a[v]}
println(there)
Run Code Online (Sandbox Code Playgroud)
输出:: [G, C, A]
@jsamol 在评论中指出的替代排序方式 -
val there = b.sortedBy { a.indexOf(it) }
Run Code Online (Sandbox Code Playgroud)