java – 在日期列表中查找离目标最近的日期的最佳方法?
|
我有一个Date对象列表和一个目标Date.我想在列表中找到最接近目标日期的日期,但只查找目标日期之前的日期. 例: 目标日期为2008-10-3,我希望得到2008-10-2 最好的方法是什么? 解决方法Sietse de Kaper解决方案假设一个反向排序列表,绝对不是最自然的东西java中的自然排序顺序遵循升序自然排序. (参见Collection.sort http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#sort(java.util.List)文档) 从你的例子来看, target date = 2008-10-03 list = 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 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
