簡體   English   中英

根據日期屬性(字符串類型)對對象列表進行排序時發生異常

[英]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)==1compare(b,a)==1因此a>bb>a沒道理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM