【问题标题】:Compare a Date inside a ArrayList customized比较自定义 ArrayList 中的日期
【发布时间】:2015-12-21 01:25:06
【问题描述】:

如何比较 ArrayList 中的日期值?

我创建了这个:

ArrayList<newContact> contactList

然后在构造函数中我得到了一个参数:

(String address, String body, long date)

我会尝试这样的:

Collections.sort(contactList.get(i).date);

但我知道这是错误的,所以如果有人可以帮助我,谢谢:)

【问题讨论】:

  • sort() 需要对 list 进行排序,如果不想按照newContact 的“自然”顺序排序,那么它还需要一个Comparator 作为第二个参数。你试图给它一个long 值。如何对单个整数值进行排序?
  • 仅供参考:在 Java 中,类名应始终以大写字母开头,因此应为 NewContact,而不是 newContact

标签: java arraylist compare


【解决方案1】:

你可以使用Collections.sort(T t, Comparator&lt;? extends T&gt; compare)。 创建一个新的 Comparator 类,如下所示。逻辑将基于你想如何排序(升序,降序)

class CompareDate implements Comparator<NewContact>
{
    public int compare(NewContact c1, NewContact c2)
    {
        if (c1.getDate() > c2.getDate()
        {
            return 1;
        }
        else if (c1.getDate() == c2.getDate()
        {
            return 0;
        }
        return -1;
    }
}

【讨论】:

    【解决方案2】:

    在 Java 8 中你可以这样做

    contactList.sort(Comparators.comparing(c -> c.getDate()));
    

    【讨论】:

      【解决方案3】:

      我这样做了:

          Collections.sort(list, new Comparator<CreateMessageAdapter>() {
          @Override
          public int compare(CreateMessageAdapter c1, CreateMessageAdapter c2) {
              if (c1.getDate() > c2.getDate())
              {
                  return 1;
              }
              else if (c1.getDate() == c2.getDate())
              {
                  return 0;
              }
              return -1;
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多