Хромосома содержит ряд результатов, сгенерированных по-разному. Метод compareTo фактически проверяет соответствие методов и соответственно возвращает результат.Как сделать метод compareTo общим договором?
возврата 1: комп = -5 ..- 1
возврата 0: комп = 0 (может произойти в различных сценариях, один из которых является то, что все баллы равны
возврата -1:. Комп = 1..5
public int compareTo(Chromosome o) {
if(o == null)
return(1);
int comp = 0;
comp += Double.compare(getScore(1),o.getScore(1));
comp += Double.compare(getScore(2),o.getScore(2));
comp += Double.compare(getScore(3),o.getScore(3));
comp += Double.compare(getScore(5),o.getScore(5));
comp += Double.compare(getScore(7),o.getScore(7));
if(comp == 0)
return(0);
if(comp > 0)
return(1);
else
return(-1);
}
Мой вопрос, как сделать этот сценарий придерживаться правил, установленных договором для comparator Видимо это не так и я получаю:. java.lang.IllegalArgumentException : Сравнение по методу нарушает его общий контракт!
Можно ли назвать старую версию Collection.sort, не требуя от пользователя, чтобы установить какое-то флаг в некоторых Java. ини? Кроме того, можно ли сообщить JVM игнорировать контракт? – jallmer