Метод сравнения нарушает его общий договор!(на Android 8.0+) - PullRequest
0 голосов
/ 05 июня 2019

Иногда на андроиде 8+ в моих сбоях я получаю сообщение об ошибке: «Метод сравнения нарушает его общий контракт!».Есть идеи?У меня есть метод сравнения 3 уровня.Во-первых, я проверяю, совпадают ли типы.Если да, то я проверяю, есть ли оба элемента в избранном.А потом, если они есть, то я проверяю, равны ли они!

public int compare(ContactEntity lhs, ContactEntity rhs) {
    int lType = lhs.getType();
    int rType = rhs.getType();

    int result = lType < rType ? -1 : (lType == rType ? 0 : 1);
    if(result == 0){
        Boolean lhsFavourite = ContactsHelper.isContactFavourite(lhs.getContactId(), favourites);
        Boolean rhsFavourite = ContactsHelper.isContactFavourite(rhs.getContactId(), favourites);
        int favouriteCompareResult = rhsFavourite.compareTo(lhsFavourite);
        if (favouriteCompareResult != 0) {
            return favouriteCompareResult;
        }
        return lhs.compareTo(rhs);
    }
    return result;
}
...