我上课简单

public class ActiveAlarm {
    public long timeStarted;
    public long timeEnded;
    private String name = "";
    private String description = "";
    private String event;
    private boolean live = false;
}

List<ActiveAlarm> con。如何按timeStarted然后按timeEnded升序排序?有人可以帮忙吗?我知道在C++中具有通用算法和重载运算符

最佳答案

使ActiveAlarm实现Comparable<ActiveAlarm>或在单独的类中实现Comparator<ActiveAlarm>。然后致电:

Collections.sort(list);

要么
Collections.sort(list, comparator);

通常,如果存在单个“自然”排序顺序,则实现 Comparable<T> 是一个好主意...否则(如果您碰巧想要按特定顺序进行排序,但可能同样容易地希望使用另一个顺序),则最好实现 Comparator<T> 。老实说,这种特殊情况可能会发生任何一种……但是我可能会坚持使用更灵活的 Comparator<T> 选项。

编辑:示例实现:
public class AlarmByTimesComparer implements Comparator<ActiveAlarm> {
  @Override
  public int compare(ActiveAlarm x, ActiveAlarm y) {
    // TODO: Handle null x or y values
    int startComparison = compare(x.timeStarted, y.timeStarted);
    return startComparison != 0 ? startComparison
                                : compare(x.timeEnded, y.timeEnded);
  }

  // I don't know why this isn't in Long...
  private static int compare(long a, long b) {
    return a < b ? -1
         : a > b ? 1
         : 0;
  }
}

10-01 03:43