我使用Collections.sort根据时间字段对列表进行升序排序。下面是代码
private String getShipmentInpickingTime(List<Shipments> shipments) {
logger.info("in getShipmentInpickingTime");
DateFormat sdf = new SimpleDateFormat("hh:mm");
Collections.sort(shipments, (o1, o2) -> {
try {
if ((!"null".equals(o1.getShipmentinpickingtime())
&& !StringUtils.isEmpty(o1.getShipmentinpickingtime()))
&& (!"null".equals(o2.getShipmentinpickingtime())
&& !StringUtils.isEmpty(o2.getShipmentinpickingtime()))) {
return sdf.parse(o1.getShipmentinpickingtime()).compareTo(sdf.parse(o2.getShipmentinpickingtime()));
}
} catch (ParseException e) {
e.printStackTrace();
}
int count1 = 0;
return count1;
});
这个方法抛出异常--
java.lang.IllegalArgumentException: Comparison method violates its general contract.
我通过谷歌了解了这个问题--它说我正在比较较大的对象和较小的对象。我试着颠倒了物体的顺序,但没有成功。
https://stackoverflow.com/questions/56704242
复制相似问题