我正在看一堆类似这样的代码,并用来Comparator<T>
对字符串数组进行排序(我问这个问题的唯一原因是我很好奇如何Comparator<T>
处理所有这些问题):
String[] names = //An string array
Arrays.sort(names, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o1.length()-o2.length());
}
});
我对此很熟悉:
Arrays.sort(names, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if(o1.length()>o2.length())
return 1;
else if(o1.length()==o2.length())
return 0;
else
return -1;
}
});
如果第一个String的长度较大,则由后者处理,则返回1;如果第二个String的长度相同,则返回-1;如果它们的长度相同,则返回0。但是第一个代码段返回的长度之差可能小于-1且大于1。那么如何Comparator<T>
处理所有这些以得到相同的结果呢?
从https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html#compare(T,%20T):
返回:当第一个参数小于,等于或大于第二个参数时,为负整数,零或正整数。
它不必是-1或1,而只需是一个负整数或一个正整数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句