On peut trier la liste dans l'une des deux façons suivantes:
1. À l'aide du Comparateur : Lorsque requis pour l'utilisation de la logique de tri dans plusieurs endroits
Si vous souhaitez utiliser la logique de tri dans un seul endroit, alors vous pouvez écrire un anonyme intérieur de la classe, comme suit, ou encore de l'extrait de la comparaison et de l'utiliser dans de multiples endroits
Collections.sort(arrayList, new Comparator<ActiveAlarm>() {
public int compare(ActiveAlarm o1, ActiveAlarm o2) {
//Sorts by 'TimeStarted' property
return o1.getTimeStarted()<o2.getTimeStarted()?-1:o1.getTimeStarted()>o2.getTimeStarted()?1:doSecodaryOrderSort(o1,o2);
}
//If 'TimeStarted' property is equal sorts by 'TimeEnded' property
public int doSecodaryOrderSort(ActiveAlarm o1,ActiveAlarm o2) {
return o1.getTimeEnded()<o2.getTimeEnded()?-1:o1.getTimeEnded()>o2.getTimeEnded()?1:0;
}
});
On peut avoir la valeur null vérifier les propriétés, si nous pouvions avoir utilisé "Long" au lieu de "long".
2. À l'aide de Comparable(ordre naturel): Si l'algorithme de tri toujours s'en tenir à une propriété:
écrire une classe qui implémente des "Comparables" et remplacer "compareTo" la méthode définie ci-dessous
class ActiveAlarm implements Comparable<ActiveAlarm>{
public long timeStarted;
public long timeEnded;
private String name = "";
private String description = "";
private String event;
private boolean live = false;
public ActiveAlarm(long timeStarted,long timeEnded) {
this.timeStarted=timeStarted;
this.timeEnded=timeEnded;
}
public long getTimeStarted() {
return timeStarted;
}
public long getTimeEnded() {
return timeEnded;
}
public int compareTo(ActiveAlarm o) {
return timeStarted<o.getTimeStarted()?-1:timeStarted>o.getTimeStarted()?1:doSecodaryOrderSort(o);
}
public int doSecodaryOrderSort(ActiveAlarm o) {
return timeEnded<o.getTimeEnded()?-1:timeEnded>o.getTimeEnded()?1:0;
}
}
appel de méthode de tri pour trier naturelle de la commande
Collections.sort(list);