Maison > Java > javaDidacticiel > Comment trier les objets Java par plusieurs champs (nom et âge) ?

Comment trier les objets Java par plusieurs champs (nom et âge) ?

Susan Sarandon
Libérer: 2024-12-15 19:58:16
original
454 Les gens l'ont consulté

How to Sort Java Objects by Multiple Fields (Name and Age)?

Tri des objets Java par plusieurs champs : nom et âge

Considérez un tableau d'objets Person, chacun contenant un âge entier et un nom de chaîne . Le tri d'un tel tableau par ordre alphabétique par nom, puis par âge nécessite un algorithme de tri personnalisé.

Utilisation de Collections.sort

La bibliothèque Java Collections fournit une méthode de tri intégrée vous pouvez exploiter :

private static void order(List<Person> persons) {
    Collections.sort(persons, new Comparator<>() {
        @Override
        public int compare(Object o1, Object o2) {
            // Compare by name (lexicographically)
            String x1 = ((Person) o1).getName();
            String x2 = ((Person) o2).getName();
            int sComp = x1.compareTo(x2);
            // If names are different, return result
            if (sComp != 0) {
                return sComp;
            }
            // If names are equal, compare by age
            Integer x1 = ((Person) o1).getAge();
            Integer x2 = ((Person) o2).getAge();
            return x1.compareTo(x2);
        }
    });
}
Copier après la connexion

Processus Flow

  1. Instancier un comparateur en implémentant la méthode de comparaison.
  2. Comparez les noms de deux objets (lexographiquement). S'il est différent, renvoyez le résultat.
  3. Si les noms sont égaux, comparez les âges et renvoyez le résultat.

En appelant Collections.sort avec ce comparateur personnalisé, vous pouvez trier le tableau des objets Personne par ordre croissant de nom, suivi de l'ordre croissant d'â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