簡體   English   中英

用於解析大數據文件的合適Java數據結構

[英]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>>將日期映射到行的其余部分,但是ListTreeMap是一個荒謬的事情嗎? 我想我可以用日期對象替換String鍵(以消除這么多的字符串比較),但它是List作為我擔心可能不適合的值。

我正在使用TreeMap因為我想按日期順序迭代鍵。

使用List作為Map的值沒有任何問題。 所有這些<>看起來都很難看,但是將泛型類放在泛型類中是完全沒問題的。

使用java.util.Date可能更好,而不是使用String作為鍵,因為鍵是日期。 這將允許TreeMap更准確地對日期進行排序。 如果將日期存儲為Strings ,則TreeMap可能無法正確排序日期(它們將按字符串排序,而不是“真實”日期)。

Map<Date, List<String>> map = new TreeMap<Date, List<String>>();

列表的TreeMap是一個荒謬的事情嗎?

從概念上講不是,但它會非常低效(因為MapList )。 您正在考慮200%或更高的開銷。 取決於您需要浪費多少內存,這可能是可接受的,也可能是不可接受的。

要獲得更高內存效率的解決方案,請創建一個包含每列(包括Date )字段的類,將所有這些字段放入List並在完成閱讀后對其進行排序(理想情況下使用快速排序)。

沒有人反對使用列表。 雖然在您的情況下可能是List<Integer>因為Map的值是合適的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM