看你排序的时候怎么调用这方法了compareTo。
假设一个类Test实现了compareTo接口,然后对一个List
for (int i=low; i
((Comparable) dest[j-1]).compareTo(dest[j])>0; j--)
swap(dest, j, j-1);
return;
现在就能看到是((Comparable) dest[j-1]).compareTo(dest[j])>0这一句调用了compareTo方法(就是我们刚才实现的那个接口),这句代码的意思就是假设前一个对象Test与后一个Test相比,如果compareTo返回的结果大于0,那么就swap(交换),然后再回到你这问题“为什么return this.age-s.age; 就是按升序排序,反过来就是降序排序”,this.age-s.age如果大于0,那么就swap交换,那就是比较大的age就被交换到后面去了,所以就是升序了。“反过来就是降序排序”。。懂了吧。
这是一个compareTo的算法!这里s.age-this.age>0就认为s对象大于this对象!即s放在this的前面!其实你代码是有问题的!