使用compare进行定义排序,对从小到大,从大到小,如何使用的理解

时间:2025-04-01 19:40:46
 PriorityQueue<Integer> queue = new PriorityQueue<Integer>(new Comparator<Integer>(){
            public int compare(Integer a,Integer b){
                return b - a; 降序
                return a - b; 升序
            }

该CompareTo()方法,如果指定的数与参数相等返回0;如果指定的数小于参数返回 -1;如果指定的数大于参数返回 1。

对于排序来讲,你可以认为当返回1时,指定的数和参数会进行交换,而非1时则不变,指定数可以当作原本的数组中靠前的数,而参数可以当作靠后的数,又因为只有靠前数大于靠后数时才返回1,所以大的会被放到后面,此时升序排序(方便记忆)。以此类推,倒序情况则相反
 

所以 从小到大,第一个数比第二个数大,为真

从大到小,第一个数比第二个数小,为真(这个地方很多博客都没有说出来,难受啊)