从无限时间序列获取一系列数据



我有一个地图,以以下格式存储时间序列数据

HashMap<Date,Double> infiniteTimeSeries;

变量无限时间序列可以拥有从 1AD 到甚至 2100AD 的数据。当用户询问 1970 年 1 月 1 日到 1972 年 1 月 1 日之间的值时,我需要选择仅对应于请求的时间范围的数据。

有没有简单的方法可以做到这一点?就像图书馆一样。我试图避免在地图上循环,因为地图甚至可以有 100 年的数据,并且在短时间内迭代 300000 个元素会严重影响性能

请提供您的宝贵建议

您可以使用TreeMap而不是HashMap。

默认情况下,树状图按其键的自然顺序排序。java.util.Date类通过实现Comparable<Date>来定义自然排序。

从树状图中,您可以使用 TreeMap.subMap() 获取一系列键的映射子集。此版本从fromKey包含扩展到toKey独占。(同级允许其他选项。

public SortedMap<K,V> subMap(K fromKey,
                         K toKey)

顺便说一下,如果你使用的是Java 8,你可以考虑使用新的Instant类而不是旧的Date类。 Instant 还实现了 Comparable。

最新更新