Tri des objets Java par propriété
Le tri des objets par propriétés spécifiques est une tâche courante dans la programmation Java. Considérons un scénario dans lequel nous avons une liste d'objets ActiveAlarm. Ces objets ont diverses propriétés, notamment timeStarted et timeEnded.
Pour trier cette liste en fonction de timeStarted puis de timeEnded par ordre croissant, nous pouvons utiliser les algorithmes de tri de Java.
Utilisation de l'interface de comparaison
Une approche consiste à implémenter une interface Comparator. Un comparateur fournit un moyen de comparer deux objets et fournit un ordre croissant ou décroissant en fonction du résultat de la comparaison. Voici comment procéder :
public class ActiveAlarmComparator implements Comparator<ActiveAlarm> { @Override public int compare(ActiveAlarm o1, ActiveAlarm o2) { // Compare timeStarted first int timeStartedComparison = Long.compare(o1.getTimeStarted(), o2.getTimeStarted()); // If timeStarted is equal, compare timeEnded if (timeStartedComparison == 0) { return Long.compare(o1.getTimeEnded(), o2.getTimeEnded()); } // Return the comparison result for timeStarted return timeStartedComparison; } }
Maintenant, nous pouvons trier la liste à l'aide du comparateur :
List<ActiveAlarm> alarms = new ArrayList<>(); // ... populate the alarms list Collections.sort(alarms, new ActiveAlarmComparator());
Utilisation des expressions Java 8 Lambda
Pour les versions Java 8 et supérieures, nous pouvons utiliser des expressions lambda pour simplifier le Comparateur implémentation :
Collections.sort(alarms, Comparator.comparingLong(ActiveAlarm::getTimeStarted) .thenComparingLong(ActiveAlarm::getTimeEnded));
Cette expression lambda représente une interface fonctionnelle qui définit la logique de comparaison pour timeStarted et timeEnded. La méthode Comparator.comparingLong() crée un Comparator basé sur la fonction donnée, qui compare les valeurs de propriété sous forme d'entiers longs.
L'utilisation d'un Comparator ou d'expressions lambda fournit un moyen polyvalent et efficace de trier des objets Java en fonction de critères spécifiques. propriétés, facilitant la manipulation et l'analyse des données.
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!