我有一个类,它以日期为关键,价格为值。我的数据结构存储了大约500万个条目。当我想要检索某个日期范围内的数据时,我将遍历数据结构并检查当前数据是否在日期范围内。
e.g。
if (startDate >= data.date && data.date <= endDate)
//do something
然而,这是非常低效的。有更好的方法吗?
答案 0 :(得分:1)
如果内存/性能不是约束*,您只需使用TreeMap
,其中subMap method允许您在时间窗口上进行过滤:
TreeMap<Date, Double> data = ...;
for (Double price : data.subMap(startDate, true, endDate, true).values()) {
//do something with price
}
*即。如果您不需要将价格保持为原始双打,例如
答案 1 :(得分:1)
编辑:是的,使用TreeMap
可以很好地自动完成工作。不知道是否允许您更改数据结构。