You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java LocalTime类比较无日期时间实现配送时间数据排序

字符串转LocalTime的正确实现

你原代码中的调用方式错误,LocalTime没有直接接收时间字符串的构造方法,需要调用它的静态parse()方法完成转换。HH:MM:SS是Java默认支持的时间格式,不需要额外自定义格式器,直接调用即可:
LocalTime deliveryTime = LocalTime.parse(rdDeliveryTimeStr);

完整排序实现

不需要手写排序逻辑,直接调用集合自带的排序方法即可,代码更简洁且稳定性更高:

// 对存储配送数据的LinkedList直接按配送时间升序排序
roadDataToBeSorted.sort((o1, o2) -> {
    LocalTime time1 = LocalTime.parse(o1.rdDeliveryTime);
    LocalTime time2 = LocalTime.parse(o2.rdDeliveryTime);
    return time1.compareTo(time2);
});

如果你要沿用自己手写的排序逻辑,只需要把对应位置的LocalTime构造替换为parse调用即可:

for (int i = 0; i < stopOrderByDeliveryTime.size() - 1; i++) {
   if (LocalTime.parse(stopOrderByDeliveryTime.get(i).rdDeliveryTime).isBefore(LocalTime.parse(stopOrderByDeliveryTime.get(i+1).rdDeliveryTime))) {
      // add element at index (it is earlier than later elements)
   } else {
      // add element to end since it is later than all prior elements
   }
}
注意事项
  • 如果CSV中的时间字符串存在格式不规范的情况,parse方法会抛出DateTimeParseException,建议提前对原始数据做格式校验,或者在转换时添加try-catch处理异常
  • LinkedList自带的sort方法性能优于手写循环排序,数据量偏大的场景更推荐使用自带方法

内容的提问来源于stack exchange,提问作者CoolHands

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:45:03