最近碰到一些业务需求,第三方接口返回一堆数据没有进行任何的处理,但前端显示需要按创建日期倒序排序,需要能在内存中进行排序。
有两种方式:
1、对String类型日期数据排序
List<UserDateSort2> list = new ArrayList<>();
list.add(new UserDateSort2("张三", "1987-05-23 12:34:07"));
list.add(new UserDateSort2("李四", "1977-05-23 05:04:07"));
list.add(new UserDateSort2("王五", "1987-05-23 09:34:07"));
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
list.sort(new Comparator<UserDateSort2>() {
@Override
public int compare(UserDateSort2 o1, UserDateSort2 o2) {
try {
long start = sdf.parse(o1.getBrithday()).getTime();
long end=sdf.parse(o2.getBrithday()).getTime();
if(end>start){
return 1;
}else if(end<start){
return -1;
}else {
return 0;
}
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
});
System.out.println(list);
2、直接对Date类型数据排序
list.add(new UserDateSort("张三", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("1987-05-23 12:34:07")));
list.add(new UserDateSort("李四", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("1977-05-23 12:34:07")));
list.add(new UserDateSort("王五", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("1997-05-23 12:34:07")));
//方法一
list.sort(Comparator.comparing(UserDateSort::getBrithday));
// Collections.reverse(list);(反转顺序)
System.out.println(list);
//方法二
Collections.sort(list, new Comparator<UserDateSort>() {
@Override
public int compare(UserDateSort o1, UserDateSort o2) {
int flag;
flag = o1.getBrithday()-o2.getBrithday();
return flag;
}
});