我想使用二分搜索将输入的日期与假期对象的排序列表进行比较。假期对象由一个带有名称的字符串和一个 jodatime 日期时间组成。所以我正在比较相同的类型,但一个是对象的一部分,另一个不是。
我有:
public class DateTimeComparator implements Comparator<DateTime> {
public int compare(DateTime userDate, DateTime listHoliday) {
if (userDate.equals(Holidays.getAllHolidays().date)) {
return 1;
}
else {
return 0;
}
}
}
Eclipse 的反馈是无法解析日期。如何正确指向假期列表的日期字段?
编辑:所以如果我不需要比较器(在另一个问题中向我建议),我如何构建我的二分搜索?到目前为止我已经:
public static boolean isHoliday(List<Holiday> holidayList, DateTime date) {
if(Collections.binarySearch(holidayList.date, date)) {
return true;
}
return false;
}
最佳答案
您不需要为此编写一个Comparator
,DateTime
本质上已经是Comparable
了。此外,引用 LIST 的date
字段是没有意义的;它是具有该字段的列表的元素,而不是列表本身。
您想使用Collections.binarySearch相反,您自己处理输出。
关于java - 如何使用比较器(用于二分搜索)将 DateTime 与对象中的 DateTime 字段进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585807/