简单来说,我有一个星期列表ArrayList<Week>
,每个星期都包含几天的列表ArrayList<Day>
,每个星期都包含Day类中的Date对象。换句话说,周,天,日期。
对于问题,我必须将ArrayList<Week>
随机化,将其用于Collections.shuffle并可以正常工作。
然后,我需要将它们放回原处,并且尝试使用以下方法:
public void sortWeeksInDateOrder(final List<Week> weeks) {
Collections.sort(weeks, new Comparator<Week>() {
@Override
public int compare(final Week week1, final Week week2) {
//Return -1 or 1 if first date is before or after second date.
return week1.getAllDays().get(0).getDate().before((week2.getAllDays().get(0).getDate())) ? -1 : 1;
}
});
}
但是,它没有排序。我想念什么吗?周从不一样,所以我不需要返回0,所以我认为这种解决方案会起作用。
最佳答案
为了使其整洁,您应该为Week类实现Comparable
接口,并向compareTo
方法提供实现细节,以说明如何比较Weeks。
因此,编写以下内容就足够了:
Collections.sort(weeks, new Comparator<Week>() {
@Override
public int compare(final Week week1, final Week week2) {
return week1.compareTo(week2);
}
});