Java对二维数组排序
排序规则:首先按照每个一维数组第一个元素进行升序排序,若第一个元素相等,则按照第二个元素进行升序排序。
原代码
Arrays.sort(a, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0]==o2[0]) return o1[1]-o2[1];
return o1[0]-o2[0];
}
});
问题:因为进行减法,有可能出现溢出的情况。
改进
Arrays.sort(points, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0]==o2[0]) {
if(o1[1]>o2[1])
return 1;
if(o1[1]<o1[2]) {
return -1;
}
return 0;
}
if(o1[0]<o2[0])
return -1;
return 1;
}
});