【发布时间】:2018-07-04 08:05:03
【问题描述】:
我的问题是比较器接口如何与 arrays.sort 方法一起使用? 例如:
Arrays.sort(arr, new Comparator<String>(){
public int compare(String first, String second){
System.out.println("Comparator : (second+first) "+(second+first)+" first+ second "+(first+second)+" comparing : "+(second+first).compareTo(first+second));
return (second+first).compareTo(first+second);
}
});
输入
arr = {"34","4","23","15"}
所以上面的sn-p基本上就是把数组排列成最大的数。
输出将是{"4","34","23","15"}
我打印了中间结果,输出符合预期,但我无法理解它是如何工作的。有人可以说它是如何使用比较方法返回的整数排序的吗?
Comparator : (second+first) 344 first+ second 434 comparing : -1
Comparator : (second+first) 423 first+ second 234 comparing : 2
Comparator : (second+first) 3423 first+ second 2334 comparing : 1
Comparator : (second+first) 3415 first+ second 1534 comparing : 2
Comparator : (second+first) 2315 first+ second 1523 comparing : 1
【问题讨论】:
-
两个字符串在读取方向上进行比较。在第一个不匹配的字符上,返回它们的代码点值之间的差异。如果字符串相等,则返回 0。另见en.wikipedia.org/wiki/…
-
真正的问题是什么?
-
我的问题是comapare方法返回正值或负值或零值,数组是如何排序的?
-
@KarthikRaja 可能会阅读下面的答案,我已经解释了 5 条规则;)
-
@azro 谢谢伙计,它帮助了我现在我可以从逻辑上理解它是如何工作的。
标签: java arrays comparator