Java List集合排序问题 Collections.sort(List ,comparator)方法

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;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值