我有一个包含小时和分钟的对象列表。该列表处于混乱状态,我需要按照从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结束? 感谢
答案 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