Java Android Calendar.compareTo在不同时间返回0
我在Android中发现了Java Android Calendar.compareTo在不同时间返回0,java,android,Java,Android,我在Android中发现了Calendar类的一个奇怪行为。当我需要按时间对一些事件列表进行排序时,我构建了一个比较器,如下所示: @Override public int compare(Event lhs, Event rhs) { return lhs.getUserTime().compareTo(rhs.getUserTime()); } 其中getUserTime是一个Calendar实例。奇怪的是,这个方法总是返回0,即使日历中的日期明显不
Calendar
类的一个奇怪行为。当我需要按时间对一些事件列表进行排序时,我构建了一个比较器,如下所示:
@Override
public int compare(Event lhs, Event rhs) {
return lhs.getUserTime().compareTo(rhs.getUserTime());
}
其中getUserTime
是一个Calendar
实例。奇怪的是,这个方法总是返回0,即使日历中的日期
明显不同
从日历中提取日期可以解决以下问题:
@Override
public int compare(Event lhs, Event rhs) {
return lhs.getUserTime().getTime().compareTo(rhs.getUserTime().getTime());
}
但我不明白问题从何而来 是否考虑单步执行Calendar.compareTo方法?原始代码将Calendar对象与long值(或getTime返回的任何值)进行比较,应该引发异常。很抱歉,它当然会将Calendar与Calendar进行比较。