首页 > 解决方案 > 通过在另一个列表中定义的自定义排序来比较 Kotlin 中的字符串

问题描述

我有一个帐户列表:

data class Account(
        val currency: String?
)

我需要按货币对帐户进行排序,而不是按字符串的自然(字母顺序)排序,那里的所有教程都已经解释过了,而是通过自定义排序,最好在列表中定义,所以我不必做某种丑陋的“if-else”链。例如,如果我使用列表

listOf("USD", "EUR", "RMB")

对于排序,货币为“USD”的账户将排在第一位,“EUR”的账户排在第二位,“RMB”的账户排在最后。

标签: listsortingkotlincomparison

解决方案


sortedBy函数将起作用:

val sortOrder = listOf("USD", "EUR", "RMB")
val accounts = listOf(Account("EUR"), Account("USD"), Account("RMB"))
val sortedAccounts = accounts.sortedBy { sortOrder.indexOf(it.currency) }

推荐阅读