-1

Java では、巨大なファイルに変数の値があり、その変数の値を他のファイルの値とすばやく比較したい場合、これを行う最善の方法は何ですか? 最初のファイルには、他のファイルの値と比較したい 100 万を超える一意の変数が含まれている可能性があります。また、多数の比較ファイルが存在する場合もあります。

ファイルの詳細: ファイルには、さまざまな変数の値がさまざまなタイム スライスで格納され、数百万のレコードと数百万の一意の変数が含まれている可能性があります。

フォーマット
変数、変数の値 A、変数の値 B、変数の値 C
id 1、値、値、値
id 2、値、値、値
id 3、値、値、値
.
.
.
ID 3000000、ある値、ある値、ある値

A、B、C の値に関する統計を作成する必要があります。1 つのタイム スライスの結果をオブジェクトに保持できると思いますが、他のタイム スライスは保持できないので、ファイルに書き込んで再度読み取る必要がありますか? また、多くのタイム スライスが存在する可能性があります。

4

2 に答える 2

1

あなたの質問は多くの重要な詳細が不足していますが、何らかの形式の名前と値のペアで構成されるファイルについて話していること、および特定の名前が各ファイルに多くても 1 回出現することを前提としています。

これは、従来の sort-merge アプローチに適しています。

  1. 名前に基づいてすべてのファイルを並べ替えます。
  2. 比較する 2 つのファイルを選択します。
  3. 2 つのファイルから名前と値のペアを並行して読み取ります。
    • 名前が等しい場合は、対応する値を比較し、両方のペアをスキップします
    • 名前が等しくない場合は、名前が小さいペアをスキップし、そのファイルから次のペアを読み取ります。
  4. いずれかのファイルの終わりに達したら停止します。

参照: http://en.wikipedia.org/wiki/Mainframe_sort_merge


注: 数百万件のレコードがある場合は、現在の世代の家庭用 PC で、メモリ内で並べ替えとマージを実行できるはずです。数十億のレコードがある場合は、各 (大きな) 入力ファイルをサブファイルに分割し、各サブファイルを並べ替え、結果をマージする並べ替えアルゴリズムを使用する必要があります。

于 2012-10-12T09:56:11.957 に答える
0

Java-Properties ファイルを使用します。オラクルのドキュメント

このようなキーと値のペアを非常にうまく管理します。

于 2012-10-12T09:50:21.183 に答える