[英]Suitable Java data structure for parsing large data file
我有一個相當大的文本文件(~4m行)我想解析,我正在尋找有關存儲數據的合適數據結構的建議。 該文件包含如下行:
Date Time Value
2011-11-30 09:00 10
2011-11-30 09:15 5
2011-12-01 12:42 14
2011-12-01 19:58 19
2011-12-01 02:03 12
我想按日期對行進行分組,所以我最初的想法是使用TreeMap<String, List<String>>
將日期映射到行的其余部分,但是List
的TreeMap
是一個荒謬的事情嗎? 我想我可以用日期對象替換String鍵(以消除這么多的字符串比較),但它是List
作為我擔心可能不適合的值。
我正在使用TreeMap
因為我想按日期順序迭代鍵。
使用List
作為Map
的值沒有任何問題。 所有這些<>
看起來都很難看,但是將泛型類放在泛型類中是完全沒問題的。
使用java.util.Date
可能更好,而不是使用String
作為鍵,因為鍵是日期。 這將允許TreeMap
更准確地對日期進行排序。 如果將日期存儲為Strings
,則TreeMap
可能無法正確排序日期(它們將按字符串排序,而不是“真實”日期)。
Map<Date, List<String>> map = new TreeMap<Date, List<String>>();
列表的TreeMap是一個荒謬的事情嗎?
從概念上講不是,但它會非常低效(因為Map
和List
)。 您正在考慮200%或更高的開銷。 取決於您需要浪費多少內存,這可能是可接受的,也可能是不可接受的。
要獲得更高內存效率的解決方案,請創建一個包含每列(包括Date
)字段的類,將所有這些字段放入List
並在完成閱讀后對其進行排序(理想情況下使用快速排序)。
沒有人反對使用列表。 雖然在您的情況下可能是List<Integer>
因為Map的值是合適的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.