gpt4 book ai didi

java - 根据日期属性(字符串类型)对对象列表进行排序时出现异常

转载 作者:行者123 更新时间:2023-12-02 01:48:43 25 4
gpt4 key购买 nike

我正在尝试根据日期(以字符串形式)对对象列表进行排序。日期采用字符串形式,如果没有日期,则对象的日期属性值分配为“-”。我正在执行下面的代码片段来对其进行排序,但是在某一时刻它给了我“比较方法违反了其一般契约”异常。我无法弄清楚契约(Contract)在哪里被破坏以及如何被破坏。

我查看了其他线程,但没有得到太多帮助。

任何输入我可能做错了什么?

Collections.sort(listOfObjects, new Comparator<ObjectType>(){

@Override
public int compare(ObjectType objectOne, ObjectType objectTwo) {
if(sortType.equalsIgnoreCase("asc")){
if(objectOne.getSomeDate().equalsIgnoreCase("-"))
return 1;
if(objectTwo.getDeliveryQueueResponseDTO().getSomeDate().equalsIgnoreCase("-"))
return -1;
sort = objectOne.getSomeDate().compareToIgnoreCase(objectTwo.getSomeDate());
}
else
sort = objectTwo.getSomeDate().compareToIgnoreCase(objectOne.getSomeDate());
}

return sort;
}

最佳答案

您应该正确实现与 "-"(空日期)之间的比较。

如果你不这样做,你就会得到 a="-"b="-" 你就会得到 compare(a,b)== 1compare(b,a)==1 所以 a>bb>a 没有意义.

关于java - 根据日期属性(字符串类型)对对象列表进行排序时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53324946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com