Kotlin相当于Swift的sorted(by :)

时间:2019-05-18 19:54:12

标签: swift sorting kotlin

我不确定如何使用类似于Swift的sorted(by :)的函数。我正在尝试使用Kotlin的sortedby()函数,但缺少某些内容。

测试是一个模型,测试是要排序的数组。

将代码快速移植到端口:

let sortedArray = tests.sorted(by: { (lhs, rhs) -> Bool in
        let lhsDisplayName = self.getDisplayName(Test: lhs).capitalized
        let rhsDisplayName = self.getDisplayName(Test: rhs).capitalized
             return lhsDisplayName < rhsDisplayName })

2 个答案:

答案 0 :(得分:2)

我想它应该像这样:

val tests = arrayOf("a", "B", "c", "d")
val sorted = tests.sortedBy { it -> getDisplayName(it).capitalize() }

答案 1 :(得分:2)

无需大写字符串,您可以使用String.CASE_INSENSITIVE_ORDER

val tests = arrayOf("c", "B", "a", "d")
val sorted = tests.sortedWith(String.CASE_INSENSITIVE_ORDER)
println(sorted) //[a, B, c, d]

根据您对getDisplayName(Test:)函数的翻译方式,可以使用compareBy,该函数采用可变数量的函数进行排序:

val sortedArray = tests.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, getDisplayName))