![](/img/trans.png)
[英]How to stream a string list and sort it based on a number in each item
[英]Scala Sort based on a number in the string
我有一個具有以下行類型的文件:
A 2.3 B 5.6
A 5.4 B 3.5
A 5.6 B 3.4
我想讀取文件並基於第二列(即2.3、5.4、5.6)對其進行排序,並將排序擴展到所有列,因此輸出應為:
A 5.6 B 3.4
A 5.4 B 3.5
A 2.3 B 5.6
我正在考慮將文件讀取為列表,然后進行匹配以獲取第二列,然后進行排序。 有沒有更好的辦法?
您有正確的想法,但請注意,有一個命令行實用程序可以為您執行此操作:
$ sort -k2 -n -r
A 2.3 B 5.6
A 5.4 B 3.5
A 5.6 B 3.4
^D
A 5.6 B 3.4
A 5.4 B 3.5
A 2.3 B 5.6
如果您真的想在scala中執行此操作,則需要將其讀取到內存中,然后使用比較器對sort進行排序,該比較器將查看每行的第二個字段。
您可能想要類似
val src = scala.io.Source.fromFile("filename")
val lines = src.getLines.toSeq.sortBy(line => -line.split(' ').apply(1).toDouble)
src.close
(否定的是將“最大的優先”排序;默認為“最小的優先”)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.