【问题标题】:Scala Sort based on a number in the stringScala 根据字符串中的数字排序
【发布时间】:2013-03-11 22:43:43
【问题描述】:

我有一个文件,其中包含以下类型的行:

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

我正在考虑将文件作为列表读取,然后进行匹配以获取第二列,然后进行排序。有没有更好的办法?

【问题讨论】:

    标签: list scala sorting


    【解决方案1】:

    您的想法是正确的,但请注意,有一个命令行实用程序可以为您执行此操作:

    $ 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 中执行此操作,则需要将其读入内存,然后使用比较器进行排序,该比较器查看每行中的第二个字段。

    【讨论】:

      【解决方案2】:

      你可能想要类似的东西

      val src = scala.io.Source.fromFile("filename")
      val lines = src.getLines.toSeq.sortBy(line => -line.split(' ').apply(1).toDouble)
      src.close
      

      (负数是最大优先排序;默认是最小优先)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-13
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        相关资源
        最近更新 更多