1

2 つの列で構成される大きな CSV ファイル (8000 行) があります。最初の列は 1 ~ 10000 の範囲の整数で、2 番目の列は 6 ~ 10 文字の文字列です。私の実装は Android にあるため、AssetManager を使用してファイルにアクセスしているため、InputStream を使用してファイルから読み取る必要があります。

システムへの入力は 1 ~ 10000 の整数で、出力は対応する文字列、または一致する整数がない場合は null です。アプリの一般的な使用例には、複数 (~4) のそのような要求が含まれます。現在の実装では、それぞれの要求でアプリが 2 ~ 3 秒間フリーズします。

ファイル全体をメモリに保存せずに、電話帳 (つまり、O(log(n)) 時間) 検索を使用して、この検索を効率的に実行できるようにしたいと考えています。ファイルをCSVから別のものに再フォーマットする必要があると思います...おそらくSQLデータベースですか?この場合、適切な実装は何でしょうか?

私は大規模なデータ アクセスにまったく慣れていません。正直なところ、Android でファイルがメモリに読み込まれ、いつアクセスされるかについての私のメンタル モデルは少しあいまいです。前もって感謝します。

4

2 に答える 2

2

csv ファイルを SqLite データベースにインポートすることをお勧めします。これを行う方法に関するリンクは次のとおりです: SqLite3 CSVと、Android で SqLite を使用するための優れたチュートリアル: Android SQLite Database and ContentProvider - Tutorial

于 2013-05-14T23:14:26.000 に答える
1

はい、そうです。内部メモリまたは SD カードに保存できます。また、データを SQLite に移行することをお勧めします。私はそのリンクをチェックしてきましたが、本当に素晴らしいようです。

于 2013-05-14T23:49:18.703 に答える