从列表中查找最接近的上一个和下一个日期

时间:2016-10-13 09:13:14

标签: java arraylist

我有一个对象列表,其中一个属性是Date。我需要通过引用某个日期来找到最接近的上一个日期和最接近的下一个日期。

哪种方法最好?如果可能的话,我想避免多次遍历List。

1 个答案:

答案 0 :(得分:2)

直观的最简单的解决方案:

  1. 采取当前日期
  2. 使用最小可能的日期值创建上一个最近的日期; 下一个最近的日期与最大可能值相同
  3. 循环播放数组并检查:如果日期小于当前日期且晚于上一个最近日期,请重新分配上一个最近的日期 ;类似的逻辑适用于下一个日期
  4. 它可以让你在一个循环中找到两个日期(O(N))。

    另一个简单明了的解决方案,但在算法上更差(O(N * log N)):

    1. 对数组进行排序
    2. 找到当前日期
    3. 上一项和下一项显然最接近上一个且最接近的下一个日期
    4. 实施取决于您 当你实施它时回来告诉我们你是怎么做的。