2011-11-08 6 views
0

私はCSV形式でアプリに入力するために適度な量のデータを必要とするマッピングユーティリティに取り組んでいます。これらのCSVファイルには100,000件以上のレコードが含まれ、各レコードには約50個のアイテムが含まれます。私は一度にこれらのファイルのいくつかを開く必要があるかもしれません。データは倍精度である必要がありますが、レコード内のすべての項目では必要ありません。これらのアイテムは、intにキャストされるか、またはtoStringが呼び出されることがあります。Java Collection Libまたはカスタムクラス?

私の最初の考えはdouble []のArrayListを作成することでした。私の2番目の考えは、必要なフォームでこのデータを保持するカスタムデータオブジェクト(MyDataClassのArrayList)を作成することでした。これは私に約45-50のインスタンス変数を持つクラスを作成させるでしょう。私はこのスケールで何もしたことがなく、そのような仕事のベストプラクティスについて少しガイダンスを使うことができました!

+1

「アプリに入力する」とはどういう意味ですか?データベースにインポート?すべてをメモリに保持する必要はありません。 – Kent

+0

CSVファイルをデータ構造(メモリ)に読み込みます。データベースは実際にはまだオプションではありません。 –

答えて

0

いずれも良好です。それはすべてあなたがデータで何をするかによって決まります。それがデータだけで、ゲッター以外のメソッドを持たない場合、それらを保持するクラスを作成することは過度の可能性があります。行に何らかの動作を追加する場合は、クラスを作成します。一意のクラスの50のフィールドは多すぎます。クラスを論理グループに分割することもできますが、すべてがデータの内容に依存します。

10個のファイルが開いていて、それぞれ100000 * 50倍のファイルがあると仮定すると、約380 MBになります。倍精度の配列ごと、およびArrayListsのためにメモリを追加する必要があります。そのような量のメモリはあまりにも多すぎるかもしれません。それはすべてあなたのJVMにあるメモリに依存します。すべてをメモリに保持できない場合は、必要に応じてファイルを読み込むか、データをデータベースに格納してください。

+0

良い取引です。はい、私がモデル化したい(集約、合併症など)いくつかの振る舞いがあります。私はそれを論理的な部分に分解することをあなたの考えが本当に好きです。 1つのセクションはトラックのマッピング、もう1つは信号のマッピング品質用、もう1つは一般的な情報用です。これは素晴らしい提案です! –