您可以使对象具有可比性:
public static class MyObject implements Comparable<MyObject> {
  private Date dateTime;
  public Date getDateTime() {
    return dateTime;
  }
  public void setDateTime(Date datetime) {
    this.dateTime = datetime;
  }
  @Override
  public int compareTo(MyObject o) {
    return getDateTime().compareTo(o.getDateTime());
  }
}
然后你通过调用来排序它:
Collections.sort(myList);
但是,有时您不想更改模型,例如当您想要对几个不同的属性进行排序时。在这种情况下,您可以动态创建比较器:
Collections.sort(myList, new Comparator<MyObject>() {
  public int compare(MyObject o1, MyObject o2) {
      return o1.getDateTime().compareTo(o2.getDateTime());
  }
});
但是,仅当您确定 dateTime 在比较时不为空时,上述方法才有效。明智的做法是处理 null,以避免 NullPointerExceptions:
public static class MyObject implements Comparable<MyObject> {
  private Date dateTime;
  public Date getDateTime() {
    return dateTime;
  }
  public void setDateTime(Date datetime) {
    this.dateTime = datetime;
  }
  @Override
  public int compareTo(MyObject o) {
    if (getDateTime() == null || o.getDateTime() == null)
      return 0;
    return getDateTime().compareTo(o.getDateTime());
  }
}
或者在第二个例子中:
Collections.sort(myList, new Comparator<MyObject>() {
  public int compare(MyObject o1, MyObject o2) {
      if (o1.getDateTime() == null || o2.getDateTime() == null)
        return 0;
      return o1.getDateTime().compareTo(o2.getDateTime());
  }
});