Question :
Lorsque nous travaillons avec des listes d'objets (par exemple, Personne), comment pouvons-nous trier de manière flexible selon différents propriétés (par exemple, nom, âge ou country)?
Réponse :
Bien que l'interface Comparable permette le tri selon une seule propriété, une approche plus polyvalente consiste à utiliser des comparateurs personnalisés avec la méthode Collections.sort. Un exemple de tri d'une classe Person :
public class FlexiblePersonComparator implements Comparator<Person> { public enum Order { Name, Age, Country } private Order sortingBy = Order.Name; @Override public int compare(Person person1, Person person2) { switch (sortingBy) { case Name: return person1.name.compareTo(person2.name); case Age: return person1.age.compareTo(person2.age); case Country: return person1.country.compareTo(person2.country); } throw new RuntimeException("Practically unreachable code, can't be thrown"); } public void setSortingBy(Order sortBy) { this.sortingBy = sortBy; } }
Utilisation du comparateur :
public void sortPersonsBy(FlexiblePersonComparator.Order sortingBy) { List<Person> persons = this.persons; // Useless line for clarification FlexiblePersonComparator comparator = new FlexiblePersonComparator(); comparator.setSortingBy(sortingBy); Collections.sort(persons, comparator); // Sorting the list }
En utilisant des comparateurs personnalisés, vous obtenez la flexibilité de trier des collections d'objets selon n'importe quelle propriété souhaitée, fournissant une solution pratique et polyvalente pour trier des structures de données complexes.
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!