Comparaison d'objets par plusieurs champs : une solution complète
Lors de la comparaison d'objets avec plusieurs champs comparables, comme dans l'exemple de personne fourni, il est essentiel pour déterminer la meilleure approche pour permettre des comparaisons flexibles sans compromettre la lisibilité et l'efficacité du code.
Java 8 introduit le concept de des comparateurs, qui permettent un tri et une comparaison personnalisés des objets. À l’aide de l’interface Comparator, vous pouvez enchaîner plusieurs critères de comparaison, en spécifiant l’ordre dans lequel ils doivent être évalués. La méthode thenComparing permet d'ajouter des champs de comparaison supplémentaires.
Pour la classe Person, vous pouvez créer un comparateur comme suit :
Comparator.comparing((Person p) -> p.firstName) .thenComparing(p -> p.lastName) .thenComparingInt(p -> p.age);
Ce comparateur comparera d'abord les individus par prénom, suivi par nom de famille, puis par âge. Si les champs précédents sont égaux, les champs suivants seront pris en compte pour la comparaison.
Si la classe fournit des méthodes d'accès, vous pouvez simplifier la création du comparateur à l'aide de références de méthode :
Comparator.comparing(Person::getFirstName) .thenComparing(Person::getLastName) .thenComparingInt(Person::getAge);
En utilisant Cette approche vous permet de comparer efficacement des objets selon plusieurs champs, offrant ainsi flexibilité et clarté du code. De plus, si une classe implémente l'interface Comparable, vous pouvez utiliser le comparateur dans la méthode compareTo :
@Override public int compareTo(Person o) { return Comparator.comparing(Person::getFirstName) .thenComparing(Person::getLastName) .thenComparingInt(Person::getAge) .compare(this, o); }
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!