容器或数据结构适合保存毫秒数据

时间:2016-05-03 03:44:13

标签: java data-structures

Java中用于保存毫秒价格数据的良好数据结构是什么? 容器中大约有1.000.000个元素或更多元素。 什么是专门用于容纳大量数据的特定容器(向量,数组,哈希等)。 我不打算对数据进行过滤或排序,但我确实需要能够分配一个密钥(可能是一个平局标记)来获得相应的价格。

2 个答案:

答案 0 :(得分:1)

如果您需要为密钥(价格)分配值(价格),则应使用实现Map界面的集合:TreeMapHashMap,{{1} }或Hashtable。您可以找到集合here的概述。

如果一个键可以有多个值,则需要一个Multimap,即一个值为集合的地图(参见示例here)。

假设情况并非如此,我建议使用LinkedHashMap,即按键排序的地图。这是一个例子:

TreeMap

持有100万个元素应该不是问题,而且应该快速获得给定时间戳的价格。

答案 1 :(得分:1)

你可能并不需要毫秒精度,你只需要能够在任何给定的毫秒内获得某些东西。 Guava的RangeMap非常适合这种情况,您可以构造一个RangeMap<LocalDateTime, Price>并使用Range.closedOpen(second, second.plusSeconds(1))作为关键字以每秒值(例如)填充它。然后,您可以在任意.get()上调用LocalDateTime,它将返回与包含该时间的Range相关联的值。您可以获得任意查找精度,但只使用尽可能多的存储空间。

如果你真的想要毫秒精度,你将很难有效地存储超过几天的数据。相反,您应该考虑将数据存储在数据库中。数据库旨在有效地存储和查询大型数据集,远远超出了为其设计的标准内存数据结构。