Tri d'une liste d'objets par propriétés multiples en Java
En Java, trier une liste d'objets par propriétés nécessite l'utilisation de comparateurs. Prenons l'exemple suivant :
public class ActiveAlarm { public long timeStarted; public long timeEnded; // ... other fields }
Pour trier une liste d'objets ActiveAlarm par timeStarted et timeEnded par ordre croissant, vous pouvez utiliser un comparateur imbriqué :
List<ActiveAlarm> alarms = ...; Comparator<ActiveAlarm> comparator = Comparator.comparing(alarm -> alarm.timeStarted) .thenComparing(alarm -> alarm.timeEnded); Collections.sort(alarms, comparator);
Utilisation Expressions Lambda Java 8
Java 8 a introduit les expressions lambda, qui fournissent un moyen concis de représenter les comparateurs :
Comparator<ActiveAlarm> comparator = (alarm1, alarm2) -> { int result = Long.compare(alarm1.timeStarted, alarm2.timeStarted); if (result == 0) { result = Long.compare(alarm1.timeEnded, alarm2.timeEnded); } return result; };
Méthode de tri alternative
Vous pouvez également utiliser une implémentation de Comparator personnalisée qui accède directement aux propriétés :
Comparator<ActiveAlarm> comparator = new Comparator<ActiveAlarm>() { @Override public int compare(ActiveAlarm o1, ActiveAlarm o2) { int result = Long.compare(o1.timeStarted, o2.timeStarted); if (result == 0) { result = Long.compare(o1.timeEnded, o2.timeEnded); } return result; } };
En utilisant des comparateurs, vous pouvez facilement trier une liste d'objets selon n'importe quelle combinaison de propriétés et dans n'importe quel ordre.
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!