Maison > Java > javaDidacticiel > Comment trier une liste d'objets par plusieurs champs en Java ?

Comment trier une liste d'objets par plusieurs champs en Java ?

Linda Hamilton
Libérer: 2024-12-15 11:12:11
original
842 Les gens l'ont consulté

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

Tri d'objets par plusieurs champs en Java

Le tri des données par plusieurs champs est une opération courante en programmation. Cette question explore comment trier un tableau d'objets personnes par ordre alphabétique par nom, puis par âge.

Utilisation de Collections.sort pour le tri multi-champs

Pour y parvenir, nous pouvons exploiter la méthode Collections.sort, qui permet un tri personnalisé basé sur un comparateur fourni. Le Comparator détermine comment deux objets doivent être comparés, nous permettant de définir une stratégie de tri multi-champs.

private static void order(List<Person> persons) {

    Collections.sort(persons, new Comparator() {

        public int compare(Object o1, Object o2) {

            String x1 = ((Person) o1).getName();
            String x2 = ((Person) o2).getName();
            int sComp = x1.compareTo(x2);

            if (sComp != 0) {
               return sComp;
            } 

            Integer x1 = ((Person) o1).getAge();
            Integer x2 = ((Person) o2).getAge();
            return x1.compareTo(x2);
    }});
}
Copier après la connexion

Dans ce code, la méthode compare compare d'abord les noms des objets de deux personnes (x1 et x2 ). S'ils sont différents, il renvoie le résultat de la méthode String.compareTo, indiquant quelle chaîne est lexicographiquement la plus grande. Si les noms sont égaux, il procède à la comparaison des âges (x1 et x2) à l'aide de la méthode compareTo pour les objets Integer.

En utilisant cette stratégie Comparator, la méthode Collections.sort triera la liste des objets personne par ordre alphabétique. par nom, et si les noms sont égaux, il les triera davantage par âge.

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