栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在日期列表中查找最接近目标的日期的最佳方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在日期列表中查找最接近目标的日期的最佳方法?

Sietse de Kaper解决方案采用了 反向 排序的列表,绝对不是最自然的解决方案

Java中的自然排序顺序遵循递增的自然顺序。(请参阅Collection.sort
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#sort(java.util.List)文档)

从您的例子来看,

目标日期= 2008-10-03 清单= 2008-10-01 2008-10-02 2008-10-04

如果另一个开发人员以幼稚的方式使用您的方法,他将获得2008-10-01的期望值

  • 不要假设列表的顺序。
  • 如果出于性能原因必须这样做,请尝试遵循最自然的惯例(升序排列)
  • 如果您确实必须遵循另一条约定,那么您确实应该记录下来。
    private Date getDateNearest(List<Date> dates, Date targetDate){      Date returnDate = targetDate      for (Date date : dates) {        // if the current iteration'sdate is "before" the target date        if (date.compareTo(targetDate) <= 0) {          // if the current iteration's date is "after" the current return date          if (date.compareTo(returnDate) > 0){ returnDate=date;          }        }      }        return returnDate;    }

编辑-我也喜欢Treeset的答案,但我认为它可能会稍微慢一些,因为它等效于对数据进行排序然后查找==
nlog(n)进行排序,然后文档暗示它是log(n)以便进行访问,因此那应该是nlog(n)+ log(n)vs n



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/463578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号