java.util.Comparator中 compare(T o1, T o2) 函数,其实现决定升序降序。举例如下:对某个对象的var类例进行排序
int compare(T o1, T o2) {
return o1.var - o2.var;
}
理解升序、降序的三步走:
1 明确 两个变量o1 o2表示序列中前 后的两个变量;位置关系:o1 在前;o2居后;
2 明确返回值表达是否交换位置,正数:交换两者位置; 负数: 不交换;
3 判断是降序还是升序。
升序
int compare(T o1, T o2) {
return o1.var - o2.var;
}
分析如下:
1 明确o1在前, o2在后;
2 若o1.var-o2.var为正,则交换位置;为负,不交换位置;
3 若上述为正条件成立,则表明o1.var为大数,大数置后,故为升序;
降序
int compare(T o1, T o2) {
return o2.var - o1.var;
}
分析如下:
1 明确o1在前, o2在后;
2 若o2.var-o1.var为正,则交换位置;为负,不交换位置;
3 若上述为正条件成立,则表明o2.var为大数,大数置前,故为降序;
默认升序/降序
int compare(T o1, T o2) {
return -1;//默认不交换,表示升序
return 1;//默认交换,表示降序
}