将日历对象与after或timeInMillis进行比较?

时间:2013-11-11 11:32:55

标签: java calendar

当比较我将日历对象转换为TimeInMillis然后在编写比较器之前比较它们之前发生的时间时。

例如,Calendar event1和event2是两个在过去的某个时间描述事件的对象。我想根据这些事件对列表进行排序,最近发生的事件是最重要的。所以我有以下代码

private class LeastRecentEventComparator implements Comparator<Event>
{
    @Override
    public int compare(Event o1, Event o2)
    {
        if (o1.getTimeInMillis() < o2.getTimeInMillis())
        {
            return -1;
        }
        else if (o1.getTimeInMillis() > o2.getTimeInMillis())
        {
            return 1;
        }
        return 0;
    }
}

我想了解更好的方法是使用Calendar.after()还是Calendar.before()方法。

1 个答案:

答案 0 :(得分:0)

java.util.Calendar也比较了使用时间(以毫秒为单位),因此两种实现都是等效的。

我个人建议每当要比较的对象实现compareTo(..)Comparable这样做)时使用Calendar方法,除非你想明确地偏离并指定你自己的排序顺序(在在这种情况下,我建议您创建自己的Comparable实现。)