Maison > Java > javaDidacticiel > le corps du texte

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

Patricia Arquette
Libérer: 2024-11-20 16:23:13
original
306 Les gens l'ont consulté

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

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

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

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

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!

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