[英]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.