最近在做一个需要调用第三方接口获取数据保存到本地数据库的项目,因为要开定时任务频繁的调用接口保存数据,而这个接口总是把所有的历史数据也打包发送过来,导致要保存的数据过大,且对方公司不愿意修改接口(其实只要对时间字段逆序排序一下就好),只能我们这边来排序后取最新数据保存到数据库中了。下面是个demo。
造几条数据 注意时间转换格式别写错了,根据你要处理的时间格式来定义
。
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Map<String,Object> map1 =new HashMap<>();
map1.put("order",1);
map1.put("uploadtime","2020-01-20 13:11:52");
Map<String,Object> map2 =new HashMap<>();
map2.put("order",2);
map2.put("uploadtime","2020-01-21 14:11:52");
Map<String,Object> map3 =new HashMap<>();
map3.put("order",3);
map3.put("uploadtime","2020-01-19 12:11:52");
List<Map<String, Object>> maps = new ArrayList<>();
maps.add(map1);
maps.add(map2);
maps.add(map3);
重写排序方法,进行时间逆序排序
Collections.sort(maps, new Comparator<Map<String,Object>>() {
@Override
public int compare(Map<String,Object> o1, Map<String,Object> o2) {
int i = 0;
try {
Date date1 = (Date) simpleDateFormat.parse(o1.get("uploadtime").toString());
Date date2 = (Date)simpleDateFormat.parse(o2.get("uploadtime").toString());
return date2.compareTo(date1);
}catch (Exception e){
e.printStackTrace();
}
return 0;
}
});
结果打印