按最大数量排序数组

时间:2015-05-06 02:40:28

标签: java arrays sorting 2d comparator

这是我未分类的数组:

P  B    A 
1  135  0
2  102  100
3  56   100
4  148  0
5  125  200
6  65   200

这是我的当前数组在我对其进行排序之后的结果,这是我得到的输出

P  B    A 
1  135  0  
4  148  0  
3  56  100  
2  102  100  
6  65  200  
5  125  200 

我希望我的数组按照B这个例子的最大数字排序A

P  B    A 
4  148  0    
1  135  0  
2  102  100 
3  56  100  
5  125  200    
6  65  200

这是我目前的代码:

Arrays.sort(x, new Comparator<int[]>() {
    public int compare(int[] o1, int[] o2) {
        int ret = Integer.compare(o1[2], o2[2]);
        // if the entries are equal at index 2, compare index 1
        if (0 == ret) {
            ret = Integer.compare(o1[1], o2[1]);
        }
        return (ret);
    }
});

2 个答案:

答案 0 :(得分:1)

只需反转比较器中B的比较:

if (ret == 0) {
    ret = Integer.compare(o2[1] , o1[1]);
}

答案 1 :(得分:0)

据我所知,第二个排序标准(第一个字段的排序标准)的顺序相反,因此请恢复比较结果(注意添加的-运算符):

if (0 == ret) {
    ret = -Integer.compare(o1[1], o2[1]);
}