非常に大きな (50 GB 以上) ASCII テキスト ファイルのインデックスを作成する必要があります。これにより、ファイルへの高速ランダム読み取りアクセスを提供できます (n 行目を取得し、n 行目に n 番目の単語を取得します)。List<List<long>> map
ここで、要素はmap[i][j]
ファイル内の i 行目の j 番目の単語の位置です。
インデックスを順番に作成します。つまり、ファイル全体を読み取り、インデックスにmap.Add(new List<long>())
(新しい行) とmap[i].Add(position)
(新しい単語) を入力します。次に、特定の単語位置を で取得しますmap[i][j]
。
私が目にする唯一の問題は、行/単語の合計数を予測できないことです。そのため、List
再割り当てのたびに O(n) にぶつかり、これを回避する方法がわかりません。
タスク用に選択したデータ構造に他に問題はありますか? どの構造がより良いでしょうか?
UPD : ファイルはランタイム中に変更されません。私がリストしたもの以外にコンテンツを取得する方法はありません。