簡體   English   中英

Scala基於字符串中的數字排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM