0

给定以下课程:

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

当在 a上调​​用时,如何构造 aComparator会导致类的实例由 propertyX 排序,然后由 propertyY 排序,然后由 propertyZ 排序。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()or一起使用Arrays.sort()

于 2012-06-07T15:40:55.613 回答