[英]Exception while sorting a list of objects based on date property(String type)
我試圖根據日期(在字符串中)對對象列表進行排序。 日期以字符串表示,如果沒有日期,則對象的日期屬性值分配為“-”。 我正在做下面的代碼片段來對其進行排序,但是有一點卻給了我“ 比較方法違反了它的一般約定 ”的例外。 我不知道合同在哪里以及如何解除。
我調查了其他線程,但沒有太多幫助。
任何輸入我可能做錯了什么?
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)==1
和compare(b,a)==1
因此a>b
和b>a
沒道理
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.