Tri des objets dans une liste par horodatage à l'aide de comparateurs
En Java, le tri d'une liste d'objets en fonction de plusieurs propriétés nécessite l'utilisation de comparateurs. Lorsque vous avez une classe avec des attributs liés au temps comme ActiveAlarm, vous pouvez utiliser des comparateurs pour les trier dans un ordre spécifique.
Pour trier une liste
List<ActiveAlarm> alarms = new ArrayList<>(); // Custom comparator to compare ActiveAlarm instances based on timeStarted and timeEnded Comparator<ActiveAlarm> comparator = new Comparator<ActiveAlarm>() { @Override public int compare(ActiveAlarm o1, ActiveAlarm o2) { // First compare timeStarted int comparisonResult = Long.compare(o1.timeStarted, o2.timeStarted); // If timeStarted is equal, compare timeEnded if (comparisonResult == 0) { comparisonResult = Long.compare(o1.timeEnded, o2.timeEnded); } return comparisonResult; } }; // Sort the list of alarms using the comparator Collections.sort(alarms, comparator);
Dans ce comparateur, la méthode compare compare d'abord les valeurs timeStarted et renvoie un entier indiquant si o1 est antérieur (<0) ou postérieur (>0) à o2. Si les valeurs timeStarted sont égales, il compare ensuite les valeurs timeEnded.
Avec Java 8 et supérieur, vous pouvez utiliser des expressions lambda pour simplifier le comparateur :
Comparator<ActiveAlarm> comparator = (o1, o2) -> { int comparisonResult = Long.compare(o1.timeStarted, o2.timeStarted); if (comparisonResult == 0) { comparisonResult = Long.compare(o1.timeEnded, o2.timeEnded); } return comparisonResult; };
En utilisant des comparateurs, vous peut trier efficacement des listes d'objets en fonction de propriétés spécifiques, offrant ainsi une approche flexible pour organiser et manipuler les données en Java.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!