如何使用复杂的条件对 Scala 中的字符串进行排序?
How to sort strings in Scala with complex criteria?
Scala 中有一个字符串列表。例如:
val l1 = List("bb", "c", "ddd", "a", "dbac", "aa", "d", "abcd")
按长度排序很简单:
l1.sortWith( _.length < _.length)
但它给出了以下结果:
List(c, a, d, bb, aa, ddd, dbac, abcd)
但是如何添加二级排序参数呢?我希望相同长度的元素按字母顺序排序。所以结果应该是:
List(a, c, d, bb, aa, ddd, abcd, dbac)
您可以通过按多个字段排序来完成。长度 + 字符串本身
val l = List("bb", "c", "ddd", "a", "dbac", "aa", "d", "abcd")
val ord = Ordering.by((s: String) => (s.length, s))
println(l.sorted(ord))
你可以试试
l1.sortBy(p => (p.length, p)) //> res0: List[String] = List(a, c, d, aa, bb, ddd, abcd, dbac)
Scala 中有一个字符串列表。例如:
val l1 = List("bb", "c", "ddd", "a", "dbac", "aa", "d", "abcd")
按长度排序很简单:
l1.sortWith( _.length < _.length)
但它给出了以下结果:
List(c, a, d, bb, aa, ddd, dbac, abcd)
但是如何添加二级排序参数呢?我希望相同长度的元素按字母顺序排序。所以结果应该是:
List(a, c, d, bb, aa, ddd, abcd, dbac)
您可以通过按多个字段排序来完成。长度 + 字符串本身
val l = List("bb", "c", "ddd", "a", "dbac", "aa", "d", "abcd")
val ord = Ordering.by((s: String) => (s.length, s))
println(l.sorted(ord))
你可以试试
l1.sortBy(p => (p.length, p)) //> res0: List[String] = List(a, c, d, aa, bb, ddd, abcd, dbac)