compartor 的 compare 方法 注意的问题

这种方式有问题的,因为 o1 - o2 可能使整型溢出,导致排序结果异常 :

Arrays.sort(input, (o1,o2) -> o1[0] == o2[0] ? o1[1] - o2[1] : o1[0] - o2[0]);

应该把  减法运算改为比较运算:        
        Arrays.sort(input, (o1,o2) -> { 
                 if(o1[0] == o2[0]){
                     return o1[1] >= o2[1] ? 1 : -1;
                 }else{
                     return o1[0] >= o2[0] ? 1 : -1;
                 }
            });
posted @ 2022-11-21 22:32  yanher  阅读(48)  评论(0)    收藏  举报