0

次のクラスが与えられます:

class Boo {
    private final String propertyX;
    private final Double propertyY;
    private final Integer propertyZ;
}

で呼び出されたComparatorときに、クラスのインスタンスがpropertyX、propertyY、propertyZの順に並べられる結果となるaを構築するにはどうすればよいでしょうか。Collection.sort(...)Collection<Boo>

Comparator行く方法はありますか?

4

2 に答える 2

4

あなたは文字通りあなたが提案することをします。

Comparator<Boo> booCmp = new Comparator<Boo>() {
    @Override
    public int compare(Boo o1, Boo o2) {
        int cmp = o1.propertyX.compareTo(o2.propertyX);
        if (cmp == 0)
            cmp = o1.propertyY.compareTo(o2.propertyY);
        if (cmp == 0)
            cmp = o1.propertyZ.compareTo(o2.propertyZ);
        return cmp;
    }
};
于 2012-06-07T15:39:39.870 に答える
0

@sudocodeは良い答えを出しましたが、それはあなたにとっては多すぎると思います。を比較するカスタムコンパレータを実装するだけpropertyXですpropertyY。このコンパレータをCollections.sort()またはで使用するArrays.sort()

于 2012-06-07T15:40:55.613 に答える