0

我想参加implement Comparable我的一堂课。

我的测试阵列:A1, A2, A3, B1, B2, B3

我想要这样排序:-按字母排序

-if A 然后升序数

-if B 然后递减数字

预期结果:A1, A2, A3, B3, B2, B1

以下代码总是会给我升序的字母和数字,例如A1, A2, A3, B1, B2, B3. 如何根据 Foo 的字母切换数字的顺序?

class Foo implements Comparable {
    String letter, int number;

    int compareTo(Foo f) {
        int x = letter.compareTo(f.letter);
        return x != 0 ? x : number.compareTo(f.number);
    }
}
4

1 回答 1

2

你可以这样做:

int compareTo(Foo f) {
    int x = letter.compareTo(f.letter);
    return x != 0 ? x 
         : letter.equals("A") ? number.compareTo(f.number)
                              : f.number.compareTo(number);
}

(这是假设您想将所有非 A 值视为降序,当然......)

于 2012-10-17T22:03:04.950 回答