二维数组排序参数解释Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]);以及Comparetor.compare升序降序补充

Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]);
Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]);
假设传来两个值,v1 与 v2,那么他们的先后顺序以 v1[0] 比 v2[0] 的结果为准 若v1[0]-v2[0]<0 即v1[0]<v2[0] 则以升序排列若 = 则 =,若 > 则 >升序排列

举一反三:Arrays.sort(intervals, (v1, v2) -> v1[0] == v2[0] ? v2[1] - v1[1] : v1[0] - v2[0]); 表示:传来两个值 v1 与 v2,若 [0] 相同,则按 [1] 降序;若不同则按 [0] 升序

补充:如何判定重写Comparator是升序还是降序

//升序
 Arrays.sort(points,new Comparator<int[]>(){
            public int compare(int[] a,int[] b){
                return a[1] < b[1] ? -1:1;
            }
        });       

对Comparetor.compare(o1, o2)方法的返回值,如果返回的值小于零,则不交换两个o1和o2的位置;如果返回的值大于零,则交换o1和o2的位置。 注意,不论在compare(o1, o2)中是如何实现的(第一种实现方式是 o1-02, 第二种实现方式是 o2 - o1),都遵循上述原则,即返回值小于零,则交换o1和o2的位置;返回值大于零,则不交换o1和o2的位置。 所以,如果采用第一种实现方式,即 o1 - o2, 那么将是升序排序。因为在原始排序中o1在o2的前边,如果o1小于o2,那么o1 - o2小于零,即返回值是小于零,但是小于零是不会交换o1和o2的位置的,所以o1依然排在o2的前边,是升序;如果o1大于o2,那么o1 - o2大于零,即返回值是大于零,大于零是要交换o1和o2的位置的,所以要改变原始排序中o1和o2的位置,那么依然是升序
即一句话,返回负数,第一个参数放前面;comparator反应两个参数的权重。1是前者权重大,-1是后者。最后按照权重由小到大排序。 o1=4, o2=6, 返回1表示4权重大,权重默认升序最后4排后面即数值降序。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值