Maison > Java > javaDidacticiel > Comment trier une liste d'objets Java en fonction de plusieurs propriétés ?

Comment trier une liste d'objets Java en fonction de plusieurs propriétés ?

Mary-Kate Olsen
Libérer: 2024-12-02 03:34:08
original
202 Les gens l'ont consulté

How to Sort a List of Java Objects Based on Multiple Properties?

Tri de la liste des objets en fonction de la propriété

Vous disposez d'une classe Java personnalisée ActiveAlarm qui contient des propriétés liées aux alarmes, notamment timeStarted et timeEnded. Vous devez trier une liste par ordre croissant par timeStarted puis par timeEnded.

Solution : Utiliser Comparator

En Java, vous pouvez trier les objets à l'aide d'un Comparator. Un comparateur est une interface qui représente une fonction permettant de comparer deux objets. Vous pouvez créer un comparateur personnalisé pour comparer les objets ActiveAlarm en fonction des critères spécifiés.

Voici un exemple d'implémentation utilisant un comparateur :

import java.util.Collections;
import java.util.Comparator;

class ActiveAlarm {
    public long timeStarted;
    public long timeEnded;
    // Other properties and accessor methods...
}

public class SortingAlarms {

    public static void main(String[] args) {
        List<ActiveAlarm> alarms = new ArrayList<>();
        
        // Add alarms to the list
        
        // Create a comparator to sort by timeStarted and then timeEnded
        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;
            }
        };

        Collections.sort(alarms, comparator);
        
        // Print the sorted list
        for (ActiveAlarm alarm : alarms) {
            System.out.println(alarm.timeStarted + " - " + alarm.timeEnded);
        }
    }
}
Copier après la connexion

Ce comparateur compare d'abord les valeurs timeStarted des alarmes, et si celles-ci sont égales, il compare les valeurs timeEnded. Le résultat de la comparaison (1, 0 ou -1) est utilisé pour déterminer l'ordre de tri.

Remarque : Pour Java 8 et versions ultérieures, vous pouvez utiliser des expressions lambda pour simplifier le mise en place du comparateur :

Collections.sort(alarms, (a1, a2) -> Long.compare(a1.timeStarted, a2.timeStarted) != 0 ? Long.compare(a1.timeStarted, a2.timeStarted) : Long.compare(a1.timeEnded, a2.timeEnded));
Copier après la connexion

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