以下是困扰我考试的一个问题
以下Java程序片段将产生什么输出?
class CardComparator implements Comparator<Integer>{
public int compare(Integer x, Integer y) {
return y*y-x*x;
)
)
Integer[] myArray = new Integer[] {3,-2,1)
Arrays. sort(myArray, new CardComparator( ) ) ;
System. out . println (Arrays . toString(myArray) ) ;
比较方法如何比较3元素数组?
为什么答案是1,-2,3?
答案 0 :(得分:0)
问:compare
如何比较3元素数组?
A:不会!它只是比较给定的任何两个整数。
Array.sort
通过使用给定compare
的{{1}}方法比较整数对,并将数组Comparator
编程的方式确定,将数组按排序顺序哪个整数在其他哪个整数之前或之后排序。
这种特殊的compare
方法的编写方式基本上会忽略要比较的两个整数的代数符号,并比较它们的绝对值。为什么?它减去两个数字的平方,任何整数的平方始终是正数。