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
DDDoriginal
2024-12-28 02:49:09709parcourir

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);
    }});
}

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!

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