Хромосома содержит ряд счетов, полученных различными способами. Метод compareTo фактически проверяет соответствие методов и, соответственно, возвращает результат.
возврат 1: комп = -5..-1
вернуть 0: comp = 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);
}
Мой вопрос заключается в том, как заставить этот сценарий соответствовать правилам, установленным контрактом для компаратор. По-видимому, это не так, и я продолжаю получать: java.lang.IllegalArgumentException: метод сравнения нарушает его общий контракт!