【问题标题】:Better data structure for retrieving data in between dates更好的数据结构,用于在日期之间检索数据
【发布时间】:2014-03-19 13:36:49
【问题描述】:

我有一个类,它将日期存储为键,将价格存储为值。我的数据结构存储了大约 500 万个条目。当我想检索某个日期范围内的数据时,我会遍历数据结构并检查当前数据是否在日期范围内。

例如

if (startDate >= data.date && data.date <= endDate)
   //do something

但是,这是非常低效的。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: java performance data-structures complexity-theory


    【解决方案1】:

    如果内存/性能不是限制*,您可以简单地使用TreeMap,它有一个subMap method,允许您在时间窗口上进行过滤:

    TreeMap<Date, Double> data = ...;
    for (Double price : data.subMap(startDate, true, endDate, true).values()) {
        //do something with price
    }
    

    *即例如,如果您不需要将价格保持为原始双倍价格

    【讨论】:

    • 谢谢。这正是我想要的。
    【解决方案2】:
    • 确保数据按键排序(即按日期)。
    • 使用二分法查找开始日期
    • 枚举,只要您还没有到达结束日期

    编辑:是的,使用TreeMap 可以很好地自动化工作。不知道你是否可以改变你的数据结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-26
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多