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

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

Susan Sarandon
Libérer: 2024-12-19 00:38:13
original
675 Les gens l'ont consulté

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

Tri par plusieurs champs en Java

Le tri des données est une tâche courante en Java, en particulier lorsque vous travaillez avec des objets complexes. Lors du tri par plusieurs champs, l’ordre des opérations devient crucial. Considérons un scénario :

Défi :

Étant donné un tableau d'objets Personne avec les attributs âge et nom, comment pouvez-vous trier ce tableau par ordre alphabétique par nom puis par âge ? Quel algorithme conviendrait pour cette tâche ?

Solution :

Pour trier une collection d'objets par plusieurs champs, Java fournit Collections.sort. Ceci peut être réalisé en utilisant un comparateur pour définir la logique de tri. Voici comment vous pouvez l'implémenter :

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

Cet algorithme de tri compare d'abord les noms des objets. Si les noms sont égaux, il procède à une comparaison de leurs âges. La méthode compareTo est utilisée pour les comparaisons de chaînes et d'entiers.

Algorithme :

L'algorithme utilisé ici est un hybride de tri par fusion et de tri rapide. Collections.sort utilise une variante de Timsort, qui est un algorithme de tri hybride efficace qui tire parti du fait que le tableau est partiellement trié par nom.

Résultat :

Lors de l'exécution de la méthode de commande, la liste fournie des objets Personne sera triée par ordre alphabétique par nom puis 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