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