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)
答案 0 :(得分:4)
你可以尝试
l1.sortBy(p => (p.length, p)) //> res0: List[String] = List(a, c, d, aa, bb, ddd, abcd, dbac)
答案 1 :(得分:0)
您可以通过多个字段进行排序。长度+字符串本身
val l = List("bb", "c", "ddd", "a", "dbac", "aa", "d", "abcd")
val ord = Ordering.by((s: String) => (s.length, s))
println(l.sorted(ord))