Иногда на андроиде 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;
}