0

ワークアウト情報をフラット ファイルに保存するクラスの Java プロジェクトに取り組んでいます。各ファイルには、時間 (エポックからのミリ秒)、重量、繰り返しを保持する 1 つのエクササイズ (BenchPress.data) の情報が含まれます。

例:

1258355921365:245:12

1258355921365:245:10

1258355921365:245:8

このデータを保存および取得する最も効率的な方法は何ですか? エクササイズを特定の日付または日付範囲に限定するために、グラフ化および検索が行われます。

私が考えていたのは、ファイルの最後に追加するのではなく、最新の情報をファイルの先頭に書き込むことでした。このように、上から読み始めると、ほとんどの検索に一致する最新の情報が得られます (仮定)。

ただし、日付の順序に保証はありません。ユーザーは、何らかの理由で、今日の演習を入力してから、先週の演習を入力することができます。すべての情報を日付順に並べ替えるには、保存時にヒットする必要がありますか?

まったく違う方向に行くべきですか?データベースが理想的であることはわかっていますが、これはグループ プロジェクトであり、データベースのインストールとデータの同期を全員で管理するのは理想的ではありません。他の人はデータベースの経験がなく、採点が難しくなります。

アドバイスや提案をありがとう。

-ジョン

4

5 に答える 5

6

物事を過度に複雑にしないでください。何百万ものレコードを扱っていない限り、すべてをメモリに読み込んで、好きなように並べ替えることができます。そして、常に最後にレコードを追加してください。これにより、ファイルが破損する可能性が低くなります。

于 2009-11-20T22:25:52.510 に答える
3

単純なプロジェクトの場合、JavaDB / Apache Derbyなどの組み込みを使用することをお勧めします。DB の構成は最小限であり、あなたの場合、最大で 2 つのテーブル (ユーザーとワークアウト) だけが必要になる場合があります。データをファイルにエクスポートすることも、チーム メンバー間の同期のために非常に簡単です。

ただし、yu_sha が指摘したように、大規模なデータセット (PC で実行する場合、> 50000) が予想される場合を除き、ファイルを使用してすべてをメモリに読み込むことができます。

于 2009-11-20T23:09:34.230 に答える
1

経由ですべての行を読み取り、BufferedReaderで解析しStringTokenizerます。Listデータを見ると、好みに応じて反復およびソートできるフィールドの配列を a に格納する可能性があります。

于 2009-11-20T22:25:00.953 に答える
0

フラットファイルの解析と作成を可能にする Java ライブラリであるflatwormを使用します。簡単な XML 定義ファイルを使用してフォーマットを記述すれば、すぐに始められます。

于 2009-11-20T23:16:43.833 に答える
0

ファイルをこの形式で保存する必要がある場合は、起動時に全体をメモリに読み込み、それを TreeMap またはその他の並べ替えられた検索可能なマップに保存するのが最善の方法です。次に、 ceilingKeyや同様の floorKeyなどの TreeMap の便利なメソッドを使用して、特定の日付/時刻に近い一致を見つけることができます。

于 2009-11-20T22:26:44.113 に答える