排序日历的ArrayList

时间:2017-06-15 08:59:24

标签: java android

我有一个包含小时和分钟的对象列表。该列表处于混乱状态,我需要按照从00:00到23:59的小时对它们进行排序。

对象是

public class ProgramItem {
    public int Hours;
    public int Minutes;

    public ProgramItem() {

    }

    public ProgramItem(int hours, int minutes, int power) {
        Hours = hours;
        Minutes = minutes;
    }

    public Calendar getCalendar() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, Hours);
        calendar.set(Calendar.MINUTE, Minutes);

        return calendar;
    }
}

我对它们进行排序的方式是

Collections.sort(items, new Comparator<ProgramItem>() {
        public int compare(ProgramItem item1, ProgramItem item2) {
            if (item1.getCalendar().before(item2.getCalendar())) {
                return -1;
            } else {
                return 1;
            }
        }
})

例如:

输入:02:00,09:00,15:00,21:00,00:00,23:00

输出应为:00:00,01:00,02:00,09:00,15:00,21:00,23:00

我的输出:02:00,09:00,15:00,21:00,23:00,00:00

问题是午夜总是在最后,但我需要它在开始时。

如何进行排序从00:00开始,到3:00-23:59结束? 感谢

2 个答案:

答案 0 :(得分:1)

将此规则添加到比较器:

Collections.sort(items, new Comparator<ProgramItem>() {
        public int compare(ProgramItem item1, ProgramItem item2) {
            if (item1.getCalendar().get(Calendar.HOUR) == 0 && item1.getCalendar().get(Calendar.MINUTE) == 0) {
                return -1
            } 
            if (item1.getCalendar().before(item2.getCalendar())) {
                return -1;
            } else {
                return 1;
            }
        }
})

答案 1 :(得分:1)

我认为主题不是日历排序。如果是这样,那么不要使用Calender对象分配更多内存, 简单地添加这个方法,

PATH