java按当前日期排序然后按日期比较
问题描述:
我有一个ArrayList对象Foo(int id, Date date)
。java按当前日期排序然后按日期比较
我将如何去选此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
前三名的目标是在未来的最接近排序(至今)第一,底部的两个都在排序过去最接近(到现在)。
答
要通过多个标准进行排序,则需要复合比较:
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);
});
即:
- 如果这两个日期后,现在,正常的顺序进行排序(增加)
- 如果两个日期都在现在之前,按相反顺序排序(递减)
- 否则(=一个日期在现在,另一个在之后),按相反顺序对它们进行排序(=更新日期为f第一次,老年后来)
+0
谢谢你的排序正确。 –
答
通过date
排序列表中,找到的最后一个项目比today
少date
,从第一位置移动到物品找到的项目到列表的末尾。
+0
谢谢你的回复,我不太明白你的意思。 –
它不是重复的。这比仅仅通过属性排序更复杂。 – janos
[*如何使用多个排序标准对AreayList进行排序*](http://*.com/q/3704804)的副本。 **发布之前的搜索堆栈溢出**。 –