如何在 Scala 中使用复杂条件对字符串进行排序?

rtr*_*szk 0 sorting scala

Scala 中有一个字符串列表。例如:

val l1 = List("bb", "c", "ddd", "a", "dbac", "aa", "d", "abcd")
Run Code Online (Sandbox Code Playgroud)

按长度排序很容易:

l1.sortWith( _.length < _.length)
Run Code Online (Sandbox Code Playgroud)

但它给出了以下结果:

List(c, a, d, bb, aa, ddd, dbac, abcd)
Run Code Online (Sandbox Code Playgroud)

但是如何添加辅助排序参数呢?我想要相同长度的元素按字母顺序排序。所以结果应该是:

List(a, c, d, bb, aa, ddd, abcd, dbac)
Run Code Online (Sandbox Code Playgroud)

moh*_*hit 5

你可以试试

l1.sortBy(p => (p.length, p)) //> res0: List[String] = List(a, c, d, aa, bb, ddd, abcd, dbac)
Run Code Online (Sandbox Code Playgroud)