简单来说,我有一个周列表 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
接口(interface),并向 compareTo
方法提供实现细节,说明您希望如何比较 Weeks。
因此,这样写就足够了:
Collections.sort(weeks, new Comparator<Week>() {
@Override
public int compare(final Week week1, final Week week2) {
return week1.compareTo(week2);
}
});
关于java - Java中的集合排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35648301/