2011-11-08 24 views
0

我正在研究一個映射實用程序,它需要將適量的數據以CSV格式輸入到應用程序中。這些CSV文件可能包含100000多條記錄,每條記錄大約包含50個條目。我可能需要一次打開其中幾個文件。數據需要雙精度,但不是記錄中的每個項目。這些項目可能會轉換爲int或有toString調用。Java Collection Lib或自定義類?

我的問題是這樣的:我的第一個想法是創建一個double []的ArrayList。我的第二個想法是創建一個自定義數據對象(MyDataClass的ArrayList)來保存我需要的表單中的這些數據。這將使我創建一個具有大約45-50個實例變量的類。我從來沒有做過這樣的任何事情,並且可以爲這樣的任務使用一些最佳實踐的指導!

+1

你是什麼意思「被輸入到應用程序」?導入數據庫?那麼你不必把所有東西都放在記憶中。 – Kent

+0

將CSV文件讀入數據結構(內存)。數據庫還不是真正的選擇。 –

回答

0

這兩個問題都很好。這完全取決於你將如何處理數據。如果它只有數據,並且除了getter之外沒有任何方法,那麼創建一個類來保存它們可能會矯枉過正。如果你想添加一些行爲,那麼創建一個類。在一個獨特的類中的50個字段有點太多了。您可能會將該類拆分爲邏輯組,但這完全取決於數據表示的內容。

如果我們假設您打開了10個文件,每個文件都有100000 * 50個雙打,那麼大約需要380MB。您必須爲每個雙精度數組和ArrayLists添加內存。這麼多的內存可能太多了,或者可能會很好。這一切都取決於您在JVM中擁有的內存。如果不能將所有內容都放在內存中,請考慮根據需要讀取文件,或將數據存儲在數據庫中。

+0

良好的交易。是的,有一些我希望建模的行爲(聚合,合成等)。我真的很喜歡你的想法,把它分解成邏輯片斷。一部分是用於繪製軌道,另一部分用於繪製信號質量,另一部分用於繪製一般信息,因此這是一個很好的建議! –