0

次のタイプの行を持つファイルがあります。

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番目の列を取得し、次にソートすることを考えていました。もっと良い方法はありますか?

4

2 に答える 2

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 で実行したい場合は、それをメモリに読み込んでから、各行の 2 番目のフィールドを参照するコンパレータで sortWith する必要があります。

于 2013-03-22T06:39:15.757 に答える
4

あなたはおそらく次のようなものが欲しいでしょう

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

(ネガティブは、最大を最初にソートすることです。デフォルトは最小を最初にソートします)。

于 2013-03-22T06:39:05.843 に答える