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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-20 16:23:13402parcourir

How to Sort a List of Objects by Multiple Properties in Java?

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!

Déclaration:
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