次のタイプの行を持つファイルがあります。
A 2.3 B 5.6
A 5.4 B 3.5
A 5.6 B 3.4
ファイルを読み取り、2.3、5.4、5.6の2番目の列に基づいて並べ替え、並べ替えをすべての列に拡張して、出力が次のようになるようにします。
A 5.6 B 3.4
A 5.4 B 3.5
A 2.3 B 5.6
私はファイルをリストとして読み取り、次に一致を実行して2番目の列を取得し、次にソートすることを考えていました。もっと良い方法はありますか?
あなたは正しい考えを持っていますが、これを行うためのコマンド ライン ユーティリティがあることに注意してください。
$ 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 番目のフィールドを参照するコンパレータで sortWith する必要があります。
あなたはおそらく次のようなものが欲しいでしょう
val src = scala.io.Source.fromFile("filename")
val lines = src.getLines.toSeq.sortBy(line => -line.split(' ').apply(1).toDouble)
src.close
(ネガティブは、最大を最初にソートすることです。デフォルトは最小を最初にソートします)。