假設我有一個Seq[Int]
。現在我想重新排序序列,首先將序列元素< = 0並且元素> 0。如何在Scala
中簡單高效地做到這一點?Scala中的重新排序順序
0
A
回答
6
最簡單的:
xs.sortBy(_ > 0)
會更有效:
xs.groupBy(_ > 0).toSeq.sortBy(_._1).flatMap(_._2)
更高效而:
xs.partition(_ <= 0) match { case(a,b) => a ++ b }
更高效的是直接與數組一起工作。由於你從Seq[Int]
開始,我假設你對速度沒有要求。
2
它的簡單,非常快:
Seq(1, -1, 4, 2, -3, 6, -4).partition(_ <= 0) match{
case (smaller, bigger) => smaller ++ bigger
}
//List(-1, -3, -4, 1, 4, 2, 6)
2
val (xs, ys) = Seq(-1, 1, -2, 2, 3, -3, 0).partition(_ <= 0)
val zs = xs ++ ys
// List(-1, -2, -3, 0, 1, 2, 3)
1
或者:
def reorder(xs: Seq[Int]): Seq[Int] =
((_: Seq[Int]) ++ (_: Seq[Int])) tupled xs.partition(_ <= 0)
相關問題
- 1. Scala中Tuple成員的重新排序
- 2. 重排排順序
- 3. 在工具欄中重新排序排序順序
- 4. SQL:重新排序列表順序
- 5. 按字母順序重新排序TableView
- 6. 重新排序引導堆棧順序
- 7. 對順序ID進行重新排序
- 8. 在Sqlyog中重新排列列順序
- 9. Python的重新排列順序
- 10. 子組件的重新排列順序
- 11. 重新排列火花柱的順序
- 12. 更新排序順序
- 13. SQL重排排順序
- 14. SQL查詢重新排列列順序
- 15. 如何重新排列KendoGrid Tab順序?
- 16. 試圖按排序順序重新排列PDF頁面
- 17. git:如何重新排序(嚴重)提交順序
- 18. 'Dir.entries`中的排序順序
- 19. NHibernate的 - 如何更新排序順序
- 20. 按隨機順序的新Guid排序
- 21. 的Python:重新排序基於以前的列表順序
- 22. 排序順序
- 23. 排序順序
- 24. 在scala中按字母順序排序字符串數組
- 25. 重新排序
- 26. Python列表重新排序,記得原來的順序?
- 27. 如何按字母順序重新排序NSArray的元素(NSString)?
- 28. 在Navicat中重新排列Navicat中的列順序
- 29. jQuery排序不能輸出更新排序列表的順序
- 30. jQuery的排序重新排序