0

文字列の問題で立ち往生しています。文字列を含む多くの(100以上としましょう)2次元配列があります。それらを検索して、一致する文字列 (検索バーから入力) を見つける必要があります。発生した場合は、一致した文字列を含む行をテーブル ビューに表示する必要があります。検索バーに文字を入力するたびに、結果を絞り込んでテーブル ビューに表示する必要があります。

すべての文字列データを保存し、後で使用するために開く必要があります。次のことについて提案してください。

  1. 文字列のすべての 2 次元配列をデータベース (SQLite) に保存しても問題ありませんか? またはxmlファイル内の各配列?または他のより良いアイデアはありますか?

  2. すべての文字列を効率的に検索するには? より良い検索のためにトライデータ構造を作成することを考えています。

ありがとう!

4

1 に答える 1

0

最大 20,000,000 個の文字列があることを考えると、ファイル形式に XML を使用することはお勧めしません。ディスク容量と解析時間の両方で多くのオーバーヘッドが追加されます。データベースは間違いなく私にとってより良い方法のように思えます。文字列がすべて最大長の場合、文字列だけで 5 GB のデータになるため、エンド ユーザーのマシンによっては、何らかの方法で文字列を圧縮することもできます。

トライは、それらを検索するためのデータ構造の良い選択のようにも思えます。とはいえ、かなり大きくなります。5GB のメモリ全体である必要はないかもしれませんが、それを実装するために必要なさまざまなポインタやものを含めると、それでもかなり大きくなる可能性があります。大きさはおそらく、文字列のプレフィックス間のオーバーラップの量に依存します。データが大きすぎることが判明した場合は、コンパクトなプレフィックス ツリーを使用できます。

別のオプションは、それらをすべて並べ替えて、ユーザーの入力に応じてバイナリ検索を実行することです。ただし、その場でソートするのはおそらく効率的ではないため、事前にソートされた文字列のインデックスを保存することをお勧めします。(それができるかどうか、またはアプリの実行中にデータが変更されるかどうかはわかりません。)

于 2012-11-03T15:36:19.847 に答える