繁体   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