0

まったく同じタイプのテキストファイルがあります。

**Unique-Key_1**
Value1
Value2

**Unique-Key_2**
Value1

**Unique_Key_3**
Value1

(キーと値は固定されていないことに注意してください。時間の経過とともに大きくなる可能性がありますが、確認されていることが1つあります。それは常にこの構造に従います)

私のプログラムは、キーを検索して、その下のすべての値を取得したいと考えています。

私はこれに対していくつかの実行可能な解決策を持っています。

1)辞書タイプを使用し、アプリが読み込まれたときにすべてのキーと値を読み取り、そのリストに入力する必要がありますか?

2)実行時にキーに基づいてファイルアクセス/検索メソッドを使用し、それを検索してから値を取得できますか?

3)最適な方法はどれですか、それとも同じことを達成するための方法や他の方法はありますか?

4

2 に答える 2

4

考慮事項:

  1. アプリケーションは、データが検索される前にファイルをロードして解析する時間がありますか?その場合は、ファイルを辞書に解析することを検討してください。そうでない場合は、必要に応じてファイルを解析します。
  2. ファイルは非常に大きくなりますか?その場合、それを辞書に解析すると、メモリを大量に消費する可能性があります。C#のオブジェクトキャッシュのようなLRUキャッシュを考えてみましょう。
  3. ファイル内のキーは並べ替えられていますか?その場合、ファイルのバイナリ検索により、ファイルの解析が高速化される可能性があります。
  4. データは頻繁に変更されますか?その場合、ファイルを解析すると、データアクセスが遅くなりますが、データが最新であることが保証されます。

もう1つの方法は、値をデータベーステーブルまたはキー/値ストアにロードすることです。これにより、データベースの保守と実行を犠牲にして、必要に応じてデータを少しずつ、または適切なアクセス速度で完全に更新できます。

于 2012-09-20T11:45:32.300 に答える
0

さて、ファイルがそれほど大きくない場合は、実行時にファイルDictionaryに簡単かつ効率的にアクセスできるようになるため、このアプローチをお勧めします。ただし、ファイルが大きすぎてメモリに保持できない場合は、この回答で提供されているアルゴリズムを使用してファイルを検索できます。

于 2012-09-20T11:47:28.190 に答える