在Scala中有一个字符串列表。假设这些字符串只包含英文字母(大写和小写)。下面是一个示例列表:
当我们使用以下代码对其进行排序时:
我们将会收到:
我们还可以使用以下方式:
但是如何在Scala中按照以下字母顺序对它们进行排序呢?:
因此,结果应该是:
val l1 = List("ab","aa", "bc","Aa", "Ab", "Ba", "BB")
当我们使用以下代码对其进行排序时:
l1.sortWith(_ < _)
我们将会收到:
List(Aa, Ab, BB, Ba, aa, ab, bc)
因此,这种排序使用字母之间的以下关系:
A < B < C < ... < a < b < c ...
我们还可以使用以下方式:
l1.sortWith(_.toLowerCase < _.toLowerCase)
接收:
List(aa, Aa, ab, Ab, Ba, BB, bc)
现在字母之间的关系如下:
(a=A) < (b=B) < (c=C) ...
但是如何在Scala中按照以下字母顺序对它们进行排序呢?:
a < A < b < B < c < C ...
因此,结果应该是:
List(aa, ab, Aa, Ab, bc, Ba, BB)
List("ABC","AB") sortWith compareString
是意料之外的。在case
块中,我会内联compareChar
。在if
守卫中不需要括号。另外,如果您可以直接贴出 REPL 的剪贴板,则更好复制粘贴。 - som-snytt