2012-02-03 3 views
0

私は、入力ファイルから大量の文字列をソートし、ソートした結果をJavaの新しいファイルに出力するアイディアを探しています。入力ファイルが非常に大きくなる可能性があるという要件があります。私はソリューションのパフォーマンスを考慮する必要があるので、どのようなアイデアですか?大量の文字列をJavaでソートするための効率的でスケーラブルな方法

+0

[非常に大きなファイルをソートする方法](http://stackoverflow.com/questions/7918060/how-do-i-sort-very-large-files) –

+0

これは[非常に]ですhttp://stackoverflow.com/questions/2087469/sort-a-file-with-huge-volume-of-data-given-memory-constraint)[共通](http://stackoverflow.com/questions/8832822/)ソートラインの大ファイル - txt-in-java)[質問](http://stackoverflow.com/questions/7918060/how-do-i-sort-very-large-files)。 – Dmitri

+0

"極端に大きい"と定義してください - どの程度の大きさですか? GB?結核?もっと? – DNA

答えて

2

External Sorting技術は、大量のデータをソートするために一般的に使用されます。これがあなたが必要とするものかもしれません。

externalsortinginjavaは、このためのJavaライブラリです。

1

SQLデータベースはありますか?ソート可能な列またはセクションを索引付けしてすべてのデータを表に挿入した場合は、ソート結果をより効率的に出力できます(またはそうでない可能性があります)。このソリューションは、データ量が利用可能なRAMの量を上回る場合にも役立ちます。

どのくらい大きいのか、目的は何かを知ることは興味深いでしょう。

+0

何かを並べ替えるだけのオーバーヘッドのようです。任意の単純なBツリー・インプリメンテーションに対して、ここでのSQLの利点は何ですか? – Dmitri

+0

利用可能なDBがありません – Ruper

1

ファイルをメモリに読み込める量に分割します。 各金額をソートしてファイルに書き込みます。 (すべてをメモリに収めることができれば完了です) 結果のファイルを1つのソート済みファイルにマージします。

CPUの効率を向上させるために、基数ソートの形式を使用することもできますが、主なボトルネックは、すべて書き直しと再読み込みだけです。

関連する問題