我上课简单
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;
}
}