比较器中的CompareTo

问题描述 投票:0回答:1

我有一个关于compareTo函数如何在比较器方面帮助Comparators的问题即o1.compareTo(o2)与o2.compareTo(o1)

如果两个字符串相等,则此方法返回0,否则返回正值或负值。如果第一个字符串在字典上大于第二个字符串,则结果为正,否则结果为负。

上面的语句很简单,但是o1.compareTo(o2)给我一个升序,而o2.compareTo(o1)给我一个降序怎么办?

如果我有整数值'5,10,3',则得到o1.compareTo(o2)为3,5,10,后者为相反值>

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是“ Negan”会发生什么。将1与2进行比较时是否设置了某种规则->表示如果值是负数,则将其放在开头,如果值是正数,则将其放在结尾?或者,如果compareTo是str2.compareTo(str1),则如果该值是负数,则将其末尾放置;如果该值是正数,则将其末尾放置,同时考虑参数(str1,str2)与(str2,str1),其中的compareTo指令将执行相同的操作,只是str1.compareTo(str2)= str2.compareTo(str1)。

编辑:简单地说,如果参数可以互换并且以二进制形式返回,那么确定位置的返回值将如何执行相同的操作。

我有一个问题,关于compareTo函数如何帮助Comparators进行排序,即o1.compareTo(o2)与o2.compareTo(o1)如果两个字符串相等,则此方法返回...

java comparator compareto
1个回答
2
投票
a.compareTo(b)小于零,如果a < b,您可以将其理解为“ a在b之前”。如果a.compareTo(b)为“ a在b之后”,则a > b大于零。
© www.soinside.com 2019 - 2024. All rights reserved.