Maison > Java > javaDidacticiel > Comment puis-je trier une liste d'objets Java selon plusieurs horodatages à l'aide de comparateurs ?

Comment puis-je trier une liste d'objets Java selon plusieurs horodatages à l'aide de comparateurs ?

Mary-Kate Olsen
Libérer: 2024-11-20 14:40:12
original
328 Les gens l'ont consulté

How can I sort a list of Java objects by multiple timestamps using Comparators?

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 par ordre croissant par timeStarted puis par timeEnded, vous pouvez créer un comparateur personnalisé qui implémente l'interface Comparator. Voici un exemple :

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

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

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!

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