按属性然后按属性实施排序,然后在Java中购买属性

时间:2012-06-07 15:32:20

标签: java sorting collections

给出以下课程:

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

如何在Comparator上调用Collection.sort(...)时,如何构建一个Collection<Boo>来导致类的实例被propertyX排序,然后是propertyY,然后是propertyZ。 / p>

Comparator的方法吗?

2 个答案:

答案 0 :(得分: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;
    }
};

答案 1 :(得分:0)

@sudocode给出了一个很好的答案,但我认为这对你来说太过分了。只需实施比较propertyX,然后propertyY的自定义比较器即可。将此比较器与Collections.sort()Arrays.sort()

一起使用