Maison > Java > javaDidacticiel > Comment trier un tableau Java d'objets par plusieurs champs (nom et âge) ?

Comment trier un tableau Java d'objets par plusieurs champs (nom et âge) ?

DDD
Libérer: 2024-12-28 02:49:09
original
694 Les gens l'ont consulté

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

Tri multi-champs en Java

Le tri de tableaux d'objets selon plusieurs champs est une exigence courante en programmation. Dans cette question, nous souhaitons trier un tableau d'objets Person par nom puis par âge.

Solution :

Pour y parvenir, nous pouvons exploiter les collections. méthode de tri avec une implémentation personnalisée de Comparator. Un comparateur est une classe qui définit la logique de comparaison pour deux objets. Dans notre cas, nous avons besoin d'un comparateur qui compare les objets Personne en fonction du nom d'abord et de l'âge comme solution de secours.

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

Explication :

  • Collections. sort : Cette méthode fournit la fonctionnalité de tri.
  • Comparator : Nous créons une classe interne anonyme qui implémente l'interface Comparator. La méthode compare définit comment comparer deux objets Person.
  • Comparaison de noms : tout d'abord, elle compare les noms des objets Person à l'aide de String.compareTo.
  • Comparaison d'âge : si les noms sont égaux, il compare les âges des objets Person à l'aide de Integer.compareTo.

Après avoir trié la liste à l'aide du comparateur personnalisé, le Liste seront triés par nom par ordre croissant et par âge par ordre croissant au sein d'un même nom.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal