list - 通过在另一个列表中定义的自定义排序来比较 Kotlin 中的字符串
问题描述
我有一个帐户列表:
data class Account(
val currency: String?
)
我需要按货币对帐户进行排序,而不是按字符串的自然(字母顺序)排序,那里的所有教程都已经解释过了,而是通过自定义排序,最好在列表中定义,所以我不必做某种丑陋的“if-else”链。例如,如果我使用列表
listOf("USD", "EUR", "RMB")
对于排序,货币为“USD”的账户将排在第一位,“EUR”的账户排在第二位,“RMB”的账户排在最后。
解决方案
sortedBy函数将起作用:
val sortOrder = listOf("USD", "EUR", "RMB")
val accounts = listOf(Account("EUR"), Account("USD"), Account("RMB"))
val sortedAccounts = accounts.sortedBy { sortOrder.indexOf(it.currency) }
推荐阅读
- html - 在导航栏中实现搜索栏?
- javascript - JavaScript:复制没有格式的文本,但保留链接
- github - 如何在 GitHub 上找到特定的标签/发布?
- angular - agora.io Angular 10 中出现错误网关/CORS 错误,因为无法开始录制
- algorithm - 在 Elixir 的嵌套映射中交换键
- javascript - 如何在 html 中获取#document 下的元素?
- r - 使用某些行的新信息更新数据框,但同时保留所有旧信息
- mime-types - .NET 5 不正确的响应 MIME 类型。预期的“应用程序/wasm”
- redux - 如何将 Props 数据从渲染传递到 redux 中的 handleSubmit 函数
- terraform - 如何将现有 EIP 分配从变量附加到 NLB