Collections.sort(list,new Comparator<>)用法和要点:
1.对String或Integer这些已经实现Comparable接口的类来说,可以直接使用Collections.sort方法传入list参数来实现默认方式(正序)排序;
2.如果不想使用默认方式(正序)排序,可以通过Collections.sort传入第二个参数类型为Comparator来自定义排序规则;
Service层
/**
* 根据workTime进行升序排序
* @param param
* @param page
* @return
*/
public PageResponseMessage<BizWorkRelease> upList(Map<String, Object> param, PageRequestMessage page){
PageResponseMessage<BizWorkRelease> bizWorkReleasePageResponseMessage = this.getList(param, page);
List<BizWorkRelease> bizWorkReleaseList = bizWorkReleasePageResponseMessage.getRows();
Collections.sort(bizWorkReleaseList, new Comparator<BizWorkRelease>() {
@Override
public int compare(BizWorkRelease o1, BizWorkRelease o2) {
SimpleDateFormat sdf= new SimpleDateFormat("yyyy:MM:dd:HH:mm:ss");
int flag = compareTime(sdf.format(o1.getWorkTime()),sdf.format(o2.getWorkTime()));
return flag;
}
});
return PageResponseMessage.newInstance(bizWorkReleasePageResponseMessage.getRecords(),bizWorkReleasePageResponseMessage.getPage(),bizWorkReleasePageResponseMessage.getTotal(),bizWorkReleaseList);
}
compareTime方法(除了下面的方法外,还可以用毫秒表示两个时间,通过相减来比较时间大小)
/**
* 比较时间大小,用于升序
* @param dateStr1
* @param dateStr2
* @return
*/
public static int compareTime(String dateStr1,String dateStr2){
String[] str1Arr = dateStr1.split(":");
String[] str2Arr = dateStr2.split(":");
for(int i = 1;i<6;i++){
if(Integer.parseInt(str1Arr[i]) > Integer.parseInt(str2Arr[i])){
return 1;
}else if(Integer.parseInt(str1Arr[i]) < Integer.parseInt(str2Arr[i])){
return -1;
}else if(Integer.parseInt(str1Arr[i]) == Integer.parseInt(str2Arr[i])){
continue;
}
}
return 0;
}
Controller层
@RequestMapping(value = "upList",method = RequestMethod.POST)
public ResponseMessage upList(@RequestBody PageRequestMessage page){
Map<String, Object> param = page.getQueryParam();
System.out.println("param = [" + param + "]");
return ResponseMessage.newOkInstance(this.service.upList(param,page));
}
在本人的实际开发中初次接触Comparator(o1,o2)时,我一开始以为比较器只是局限于两个对象中的某个属性进行比较和排序。但是通过数据测试,跑出来的结果(我的测试样例为对时间的排序)可以为未知对象的时间属性进行排序。
Postman返回的json数据已经为排序后的list数据
{
"status": 1,
"data": {
"records": 8,
"page": 1,
"total": 1,
"rows": [
{
"flag": "0",
"isDelete": "0",
"updateTime": "2018-04-10 18:49:12",
"createdTime": "2018-04-10 15:42:15",
"id": "201804101542150216307",
"userId": "",
"place": "guangdong",
"workTime": "2018-03-07 00:00:00",
"taskRequirement": "123456",
"leaderName": "000000000000000000000",
"userName": "000000000000000000000",
"title": "123"
},
{
"flag": "0",
"isDelete": "0",
"updateTime": "2018-04-07 21:05:23",
"createdTime": "2018-04-05 14:19:43",
"id": "201804051419431207844",
"userId": "201712011429425976348",
"place": "jieyang",
"workTime": "2018-03-17 19:27:06",
"taskRequirement": "no",
"leaderName": "admin",
"userName": "test2",
"title": "21"
},
{
"flag": "0",
"isDelete": "0",
"updateTime": "2018-04-10 16:26:30",
"createdTime": "2018-04-10 16:15:44",
"id": "201804101615440299850",
"userId": "",
"place": "56",
"workTime": "2018-04-01 00:00:00",
"taskRequirement": "466",
"leaderName": "201712191533075565450",
"userName": "201712191533075565450",
"title": "34"
},
{
"flag": "0",
"isDelete": "0",
"updateTime": "2018-04-11 20:54:44",
"createdTime": "2018-04-08 12:59:04",
"id": "201803201927544700760",
"userId": "201712011429425976348",
"place": "guangzhou",
"workTime": "2018-04-02 00:00:00",
"taskRequirement": "wu",
"leaderName": "admin",
"userName": "admin",
"title": "you"
},
{
"flag": "0",
"isDelete": "0",
"updateTime": "2018-04-10 18:48:48",
"createdTime": "2018-04-10 17:54:15",
"id": "201804101754148395236",
"userId": "000000000000000000000",
"place": "333",
"workTime": "2018-04-02 00:00:00",
"taskRequirement": "4",
"leaderName": "000000000000000000000",
"userName": "",
"title": "222"
},
{
"flag": "0",
"isDelete": "0",
"updateTime": "2018-04-10 18:46:53",
"createdTime": "2018-04-10 18:16:08",
"id": "201804101816076509669",
"userId": "201712191343440975128",
"place": "333",
"workTime": "2018-04-04 00:00:00",
"taskRequirement": "",
"leaderName": "000000000000000000000",
"userName": "201712191343440975128",
"title": "222"
},
{
"flag": "0",
"isDelete": "0",
"updateTime": "2018-04-10 18:03:36",
"createdTime": "2018-04-10 18:00:36",
"id": "201804101800357740584",
"userId": "000000000000000000000",
"place": "111",
"workTime": "2018-04-11 00:00:00",
"taskRequirement": "",
"leaderName": "000000000000000000000",
"userName": "",
"title": "111"
},
{
"flag": "0",
"isDelete": "0",
"updateTime": "2018-04-10 18:49:28",
"createdTime": "2018-04-10 18:49:28",
"id": "201804101849284945797",
"userId": "201712011429425976348",
"place": "111",
"workTime": "2018-04-25 00:00:00",
"taskRequirement": "",
"leaderName": "test2",
"userName": "admin",
"title": "111"
}
]
},
"message": "",
"timestamp": 1523798739057
}