compareTo排序规则

当语句return s1.age > s2.age ? 1 : -1;的返回值为1时,也就是说 s1的值大于s2的值时 ,compareTo是按照升序(由小到大)排序的!

当返回值为-1时,也就是说 s1的值小于s2的值时 ,compareTo是按照降序(由大到小)排序的!

当返回值为0时,s1等于s2的值,如果数值全部相等则排序也同样按照初始顺序排列。

例子:

//类中的私有变量>形参 返回1 为从小到大
public int compareTo(Student s) {
if(this.score>s.getScore()){
return 1; //正整数是大于
}else if(this.score<s.getScore()){
return -1;//负整数是小于
}else{
return 0; //0为等于
}
}

 Queue<int[]> queue=new PriorityQueue<>(new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0]==o2[0]?o2[1]-o1[1]:o2[0]-o1[0];
            }
        });

// 注意Lambda中,参数为数组时可以这样写  

Queue<int[]> queue=new PriorityQueue<>((o1, o2) -> o1[0]==o2[0]?o2[1]-o1[1]:o2[0]-o1[0]);

 Queue<int[]> queue=new PriorityQueue<>((o1, o2) -> o1[0]==o2[0]?o2[1]-o1[1]:o1[0]-o2[0]);
        queue.add(new int[]{0,2});
        queue.add(new int[]{0,-1});
        queue.add(new int[]{0,3});
        queue.add(new int[]{1,2});
        queue.add(new int[]{1,-1});
        queue.add(new int[]{2,3});
  
        System.out.println(queue.size());
        while(queue.size()!=0)
            System.out.println(Arrays.toString(queue.poll()));

res: [0, 3]  [0, 2]  [0, -1]  [1, 2]  [1, -1]  [2, 3]  
o1[0]-o2[0] 前减去后按照从小到大排序
o2[1]-o1[1] 后减去前按照从大到小排序 


  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值