如何使用复杂的条件对 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)