У меня есть вопрос относительно того, как функция CompareTo помогает компараторам в отношении упорядочения, например, o1.compareTo (o2) vs o2.compareTo (o1)
Если обе строки равны, тогда этометод возвращает 0, иначе он возвращает положительное или отрицательное значение. Результат будет положительным, если первая строка лексикографически больше второй строки, в противном случае результат будет отрицательным.
Вышеприведенное утверждение является простым, но как получается, что o1.compareTo (o2) дастмне порядок возрастания, тогда как o2.compareTo (o1) дает мне порядок убывания?
Если у меня целочисленные значения '5,10,3', я получу 3,5,10 с o1.compareTo (o2) иобратное для последнего
String str1 = "Negan";
String str2 = ""; //empty string
//it would return the length of str1 in positive number
str1.compareTo(str2); // 5
//it would return the length of str1 in negative number
str2.compareTo(str1); //-5
Следуя этой логике с приведенным выше кодом для str1.compareTo (str2), у меня должен быть порядок возрастания, когда после него идут лексографически большие числа, но что происходит, если приходит str1так как "" и str2 это "Неган". Есть ли какое-то правило, устанавливаемое, когда 1 сравнивается с 2 -> означает, что если значение отрицательное, поместите его в начало и, если оно положительное, поместите его в конец? В качестве альтернативы, если CompareTo - это str2.compareTo (str1), если значение является отрицательным, поместите его в конец и, если оно положительное, поместите его в начало, при этом учитывается упорядочение параметров (str1, str2) против(str2, str1), где соответствующие заказы CompareTo будут выполнять то же действие, только что str1.compareTo (str2) = str2.compareTo (str1).
Редактировать: просто, как возвращаемое значение определяетпозиционирование, если параметры являются взаимозаменяемыми и в двоичных формах, будет выполнять одно и то же действие.