Comparator的compare方法怎么就報Comparison method violates its general contract!

如題,最近公司的tesflight app突然就報這個錯,導致排序列表無法顯示,起初看到這個錯:
[Comparison method violates its general contract!],再看看定位到的Comparator的compare方法,一頭霧水,看compare方法的源碼說明,根本沒提到會報這個錯,而且這項目的代碼好久都沒更新,怎么突然就報錯了,大無語!

看了半天沒有頭緒,只好求助萬能的google,發現這個錯確實跟compare方法有關,詳情可以參考這篇文章,具體到我自己的情況,主要是因為代碼中需要對參數先進行特定校驗,如果是特定值則返回-1,但之前的代碼只對第一個參數進行了處理,忽略了第二個參數,導致違反了自反性,再加上之前打包機估計升級了jdk版本,就出現了這個報錯。

記錄一下這個問題,compare里的邏輯還是需要滿足自反性,傳遞性,對稱性,否則坑的就是以后的自己。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容