Java 细节汇总(5)-Comparator#compare() 升降序确定

1. Comparator#compare() 升降序确定

Java 语言中 Comparator#compare(T o1, T o2) 方法的实现可以决定排序元素的升序降序,但是许多人对升降序如何确定完全没有概念。要理解升降序是如何确定的,首先要有以下观念:

  1. Comparator#compare(T o1, T o2) 方法的两个形参表示了元素在集合中的相对位置,入参 o1 位置在前,o2 位置在后
  2. 该方法返回值表达的含义是元素是否需要交换位置,返回值为正数,元素位置互换,0 或负数,不做处理

升序分析

举例以下方法实现,其升降序的分析如下:

  1. 首先明确元素在集合中的相对位置, o1 在前, o2 在后
  2. 如果 o1.val - o2.val 计算结果为正,交换两元素位置,为 0 或者负,不交换位置
  3. 综合以上条件,计算结果为正时,则 o1.val 为较大的数,o1 需要与 o2 交换位置。原本大数位置在前,较小的数位置在后,现在需要将大数置后,排序方式显然为升序

降序的判断分析与此类似,不再赘述

int compare(T o1, T o2) {
    
    
    return o1.val - o2.val;
}

猜你喜欢

转载自blog.csdn.net/weixin_45505313/article/details/130705913