考慮具有以下結構的巨大CSV(改性爲簡單起見):爪哇:同鍵映射的地圖
ID, NAME, ADDRESS, PHONE, MAIL
1, Jon, UK, 403, [email protected]
2, Marc, UK, 292, [email protected]
3, Darin, France, 291, [email protected]
...
(Some million records)
爲快速獲取的自然數據結構是散列表,其中每ID
是一個關鍵和NAME, ADDRESS, PHONE, MAIL
是價值。我的dillema是價值觀的數據結構。
將它存儲在一個HashMap
,其中每個行標題是關鍵是浪費空間,因爲每行的行標題完全相同。把它作爲一個數組將失去每個項目的元數據,因爲讀者
我想的是兩種方法:
超載Java的HashMap中。行標題將被存儲一次,並且每個
ID
都將與一個字符串數組關聯。get()
方法將被重載,以便它將返回標題行和行中相應字段之間的映射。創建一個啞類存儲使用getter和setter每一行的數據(
row.getMail()
,row.getAddress()
,...)
什麼是正確的方式去,在存儲效率方面,類型安全和速度?
我確實有幾百萬條記錄。 – 2012-03-05 11:39:56
在這種情況下,可能值得測試它是否足夠重要(小於我不會打擾)。您仍然可以發現,雖然它節省了100 MB,但這隻會意味着您的服務器的可用內存增加了100 MB,但保持代碼更簡單實際上是一個更好的主意。 – 2012-03-05 12:19:24
我會考慮這個 - 謝謝! – 2012-03-05 12:34:47