0

implement Comparable私は私のクラスの1つになりたいです。

私のテスト配列:A1, A2, A3, B1, B2, B3

私はこのようにソートしたい:-文字によるソート

-Aの場合、昇順の番号

-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 に答える