Обратите внимание, что CompareTo не гарантирует возврата -1 или 1 для большего или меньшего значения.
Возвращает 0, если они одинаковые, и затем число, большее или меньшее 0, если они разные.
Представьте себе псевдокод для примитивной формы этого - например, если мы сравниваем два числа, мы можем сделать это:
public int compareTwoNumbers(x, y) {
return x - y;
}
Таким образом, сравнение 5 и 3 даст вам -2или 2 (например, в зависимости от того, где они находятся).