Java List集合排序问题 Collections.sort(List ,comparator)方法
list集合根据时间排序:
一、定义规则:
/**
* 时间按倒叙排序
*/
static Comparator<Message> comparator = new Comparator<Message>() {
@Override
public int compare(Message p1 , Message p2 ) {
Date date1= DateUtils.stringToDate(p1.getCreateTime(),DateUtils.DATE_TIME_PATTERN);
Date date2= DateUtils.stringToDate(p2.getCreateTime(),DateUtils.DATE_TIME_PATTERN);
if(date1.before(date2) ){
return 1 ; //正数
}else if (date2.before(date1)) {
return -1 ; //负数
}else {
return 0; //相等为0
}
}
};
二、使用:Collections.sort( messageList , comparator );
public ReturnInfo selectMsg(Integer msgUserId, Integer page, Integer pageSize) {
ReturnInfo returnInfo = new ReturnInfo();
PageHelper.startPage(page, pageSize);
List<Message> messageList = new ArrayList<>();
//查询个人系统通知
List<Message> messageList1 = messageService.selectMsg(msgUserId);
//查询系统官方通知
List<MessageSys> messageSys = messageSysService.selectAll();
//将官方通知拷贝到个人通知集合中
List<Message> messageList2 = CopyUtil.copyList(messageSys, Message.class);
//合并集合
messageList1.addAll(messageList2);
//根据时间降序排序
Collections.sort( messageList , comparator );
PageInfo pageInfo = new PageInfo(messageList);
if (pageInfo != null && pageInfo.getSize() != 0) {
returnInfo.setType(ReturnType.OK);
returnInfo.setObject(pageInfo);
returnInfo.setMsg("查询成功");
} else {
returnInfo.setType(ReturnType.NULL);
returnInfo.setMsg("暂无数据");
}
return returnInfo;
}
三、全部代码展示
public class MessageController {
/**
* 时间按倒叙排序
*/
static Comparator<Message> comparator = new Comparator<Message>() {
@Override
public int compare(Message p1 , Message p2 ) {
Date date1= DateUtils.stringToDate(p1.getCreateTime(),DateUtils.DATE_TIME_PATTERN);
Date date2= DateUtils.stringToDate(p2.getCreateTime(),DateUtils.DATE_TIME_PATTERN);
if(date1.before(date2) ){
return 1 ; //正数
}else if (date2.before(date1)) {
return -1 ; //负数
}else {
return 0; //相等为0
}
}
};
@GetMapping("selectMsg")
public ReturnInfo selectMsg(Integer msgUserId, Integer page, Integer pageSize) {
ReturnInfo returnInfo = new ReturnInfo();
PageHelper.startPage(page, pageSize);
List<Message> messageList = new ArrayList<>();
//查询个人系统通知
List<Message> messageList1 = messageService.selectMsg(msgUserId);
//查询系统官方通知
List<MessageSys> messageSys = messageSysService.selectAll();
//将官方通知拷贝到个人通知集合中
List<Message> messageList2 = CopyUtil.copyList(messageSys, Message.class);
//合并集合
messageList1.addAll(messageList2);
messageList.addAll(messageList1);
//根据时间降序排序
Collections.sort( messageList , comparator );
PageInfo pageInfo = new PageInfo(messageList);
if (pageInfo != null && pageInfo.getSize() != 0) {
returnInfo.setType(ReturnType.OK);
returnInfo.setObject(pageInfo);
returnInfo.setMsg("查询成功");
} else {
returnInfo.setType(ReturnType.NULL);
returnInfo.setMsg("暂无数据");
}
return returnInfo;
}
}