Maison > Java > javaDidacticiel > Comment puis-je trier les objets Java selon plusieurs propriétés à l'aide de comparateurs et d'expressions Lambda ?

Comment puis-je trier les objets Java selon plusieurs propriétés à l'aide de comparateurs et d'expressions Lambda ?

Susan Sarandon
Libérer: 2024-11-30 12:35:15
original
565 Les gens l'ont consulté

How Can I Sort Java Objects by Multiple Properties Using Comparators and Lambda Expressions?

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;
    }
}
Copier après la connexion

Maintenant, nous pouvons trier la liste à l'aide du comparateur :

List<ActiveAlarm> alarms = new ArrayList<>();

// ... populate the alarms list

Collections.sort(alarms, new ActiveAlarmComparator());
Copier après la connexion

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));
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal