【问题标题】:ordering objects by comparator通过比较器排序对象
【发布时间】:2014-04-26 21:53:46
【问题描述】:

我需要先按日期排序对象列表,然后按名称按日期排序。就像下面通过比较器的示例:

- 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;
    }
};

但是我怎样才能将这两个结合起来并进行嵌套排序呢?

干杯!

【问题讨论】:

  • 只是连接它们并作为一个字符串比较,但将日期设为 yyyy/mm/dd

标签: android comparator


【解决方案1】:
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;
    }
};

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
      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;
          }
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-15
        • 2015-10-07
        相关资源
        最近更新 更多