java中的时间排序易错点

最近做流程项目时候发现,流程日志显示的问题:
流程执行完最后一个任务节点就会紧接着执行结束节点,如果最后节点的执行日志和结束节点的执行日志在同一个时间点被存放到日志表中时候,通过比较两者在日志表中创建的时间先后的话,通过下面的方法就会出现,最后任务节点和结束节点顺序颠倒的问题。
仔细想想,这种情况适合所有按照时间排序的情况,以后只要根据时间排序,就应该考虑到时间相等的情况,值得记录一下。

原先的比较时间的代码:

/**
* 查询历史步骤
* @return
*/
public String queryHistoryStep(){
WorkflowDeptService workFlowDeptService=(WorkflowDeptService)getServiceBean("workflowDeptService");
WorkflowLogService workflowLogService = (WorkflowLogService)getServiceBean("workflowLogService");
TbBSenseWorkFlowLog log = new TbBSenseWorkFlowLog();
log.setSwfolWorkflowInst(pid);
List<TbBSenseWorkFlowLog> logs = workflowLogService.findWorkflowLogByExample(log);
Collections.sort(logs, new Comparator<TbBSenseWorkFlowLog>() {
public int compare(TbBSenseWorkFlowLog arg0, TbBSenseWorkFlowLog arg1) {
if(arg0.getSwfolCreateTime().after(arg1.getSwfolCreateTime()))
return 1;
else
return -1;
};
});
jsonConfig.registerJsonValueProcessor(Timestamp.class, new JsonTimestampValueProcessorImpl());
JSONArray json = JSONArray.fromObject(logs,jsonConfig);
writerText(json.toString());
return null;
}

要修改的地方是if判断语句,将时间相等的情况加上就对了,修改后的判断语句如下:

if(arg0.getSwfolCreateTime().after(arg1.getSwfolCreateTime())||arg0.getSwfolCreateTime().equals(arg1.getSwfolCreateTime()))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值