我有一个对象Foo(int id, Date date)
的ArrayList。
我如何将此ArrayList排序为下面的内容
id = 3, date = 07 Nov 2016
id = 2, date = 08 Nov 2016
id = 5, date = 30 Nov 2016
id = 1, date = 05 Nov 2016
id = 4, date = 04 Nov 2016
将来排名前三位的对象(最接近现在)排在第一位,过去排在后面的两位是过去排在第一位(最近)。
答案 0 :(得分:1)
按date
对列表进行排序,找到date
小于today
的最后一项,将项目从第一项移至找到的项目到列表末尾。
答案 1 :(得分:1)
要按多个条件排序,您需要一个复合比较器:
Collections.sort(dates, (d1, d2) -> {
if (d1.after(now) && d2.after(now)) {
return d1.compareTo(d2);
}
if (d1.before(now) && d2.before(now)) {
return -d1.compareTo(d2);
}
return -d1.compareTo(d2);
});
那是: