通过比较器排序对象

时间:2014-03-20 07:40:15

标签: android comparator

我需要按名称排序对象列表,首先按日期和按日期排序..如下面的示例通过比较器:

- 19/03/2014 Anna Hatta
- 19/03/2014 Keller Jay
- 20/03/2014 Anna Hatta
- 20/03/2014 Keller Jay
- 20/03/2014 Zoner Charley

我知道如何按日期和名称单独订购,例如:

public static Comparator<Prospect> DATE_ORDER_PROSPECTS = new Comparator<Prospect>() {
    public int compare(Prospect p1, Prospect p2) {
        int res = p2.getDate().compareTo(p1.getDate());
        return res;
    }
};

但是我如何组合这些2并进行嵌套排序?

干杯!

3 个答案:

答案 0 :(得分:2)

public static Comparator<Prospect> DATE_NAME_PROSPECTS = new Comparator<Prospect>() {
    public int compare(Prospect p1, Prospect p2) {
        int res = p1.getDate().compareTo(p2.getDate());
        return res == 0 ? p1.getName().compareTo(p2.getName()) : res;
    }
};

答案 1 :(得分:0)

在比较器比较(...)中,首先按比较重要的标准进行比较。如果得到0(相等),则返回由不太重要的标准获得的值。

通过这种方式,您可以使用嵌套排序顺序,如果需要,可以使用多层次的层次结构。

答案 2 :(得分:0)

public static Comparator<Prospect> DATE_ORDER_PROSPECTS = new Comparator<Prospect>() {
    public int compare(Prospect p1, Prospect p2) {
        int res = p2.getDate().compareTo(p1.getDate());
        if(res == 0) {
            p2.getName().compareTo(p1.getName());
        }
        return res;
    }
};