根据长度对字符串列表进行排序

时间:2017-09-14 06:18:50

标签: string scala list sorting

我有一个字符串列表

List("cbda","xyz","jlki","badce")

我想对字符串进行排序,使得奇数长度字符串按降序排序,甚至长度字符串按升序排序

List("abcd","zyx","ijkl","edcba")

现在我已经通过分别迭代每个元素,然后找到它们的长度并相应地对它们进行排序来实现它。最后我将它们存储在单独的列表中。我希望知道在Scala中是否有任何其他有效的方法可以做到这一点,或者更简单的方法(比如我们在Python中使用的某种列表推导)?

2 个答案:

答案 0 :(得分:2)

您可以使用sortWith和map:

来完成
list.map(s => {if(s.length % 2 == 0) s.sortWith(_ < _) else s.sortWith(_ > _)})

答案 1 :(得分:0)

我不确定你在Python中引用了什么,所以如果下面的例子与你的期望不符,细节会有所帮助

第一个,让你两次浏览列表:

List("cbda","xyz","jlki","badce").map(_.sorted).map {
  case even if even.length % 2 == 0 => even
  case odd => odd.reverse
}

或者让你经历两次偶数长度的元素:

List("cbda","xyz","jlki","badce").map {
  case even if even.length % 2 == 0 => even.sorted
  case odd => odd.sorted.reverse
}