基于日期和ID的java排序arrayList
我想对任务列表进行排序,首先按日期排序,然后按任务ID排序 下面是代码
ArrayList<fullist> taskdet = new ArrayList<fullist>();
public static class fullist
{
public int date;
public int id;
public fullist(int id, int date) {
this.date = date;
this.id = id;
}
}
我用过这些收藏品。排序方法进行排序,但通过此方法,我可以按日期或ID一次排序。 如果按日期排序
Collections.sort(taskdet, new Comparator<fullist>() {
@Override
public int compare(fullist o1, fullist o2) {
//if(o1)
return Integer.compare(o1.date, o2.date);
}
});
这是显示的输出:
day 19 ID 2
day 19 ID 1
day 19 ID 3
day 20 ID 2
day 20 ID 1
day 20 ID 3
如果按ID排序
Collections.sort(taskdet, new Comparator<fullist>() {
@Override
public int compare(fullist o1, fullist o2) {
//if(o1)
return Integer.compare(o1.date, o2.date);
}
});
这是显示的输出:
day 20 ID 1
day 19 ID 1
day 19 ID 2
day 20 ID 2
day 20 ID 3
day 19 ID 3
但产出应该是:
day 19 ID 1
day 19 ID 2
day 19 ID 3
day 20 ID 1
day 20 ID 2
day 20 ID 3
# 1 楼答案
使用Java8:
# 2 楼答案
另一个不错的解决方案是使用番石榴ComparisonChain:
# 3 楼答案
如果使用Java 8,则可以编写:
这假设您有一个
getDate
和getId
getter,并且该静态导入:# 4 楼答案
如果
date
值相同,则需要使用Comparator
来比较id
值# 5 楼答案
这将有助于: