以下为个人学习心得:
问题在于在实现compartaor时该怎么写才是降序,该怎么写才是升序?
int [] a={1,3,7,6,4,9};
Arrays.sort(a, new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return o1-o2;//升序排序
// return o2-o1;//降序排序
}
});
首先需要知道两个知识点:
(1).sort()函数默认从小到大排序
(2).comparator类的compar(T a,T b)方法需要重写,返回正数意味着传入的参数a>b;返回负数意味着a<b;返回0意味着a=b;
接下来就开始分析,最终目的是将数组降序排序。
如果在传入参数时实际上a<b,那么我们希望输出时是ba序列,由(1)可知b应该要“小于”a,也就是a>b,又由(2)可知既然要a>b,那么方法需要返回正数,即:
public int compare(Integer o1, Integer o2) {
if(a<b) return 1;
}
同理,如果在传入参数时实际上a>b,那么我们希望输出时是ab序列,由(1)可知a应该要“小于”b,也就是a<b,又由(2)可知既然要a<b,方法需要返回负数,即&#