我有一个文件,其中包含以下类型的行:
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
我正在考虑将文件作为列表读取,然后进行匹配以获得第二列然后排序。还有更好的方法吗?
答案 0 :(得分: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中执行此操作,则需要将其读入内存,然后使用比较器进行排序,以查看每行中的第二个字段。
答案 1 :(得分:4)
你可能想要像
这样的东西val src = scala.io.Source.fromFile("filename")
val lines = src.getLines.toSeq.sortBy(line => -line.split(' ').apply(1).toDouble)
src.close
(否定的是排序最大的第一个;默认是最小的第一个)。