Maison >Java >javaDidacticiel >Comment la méthode `contains()` d'ArrayList évalue-t-elle l'égalité des objets ?
Évaluation des objets par ArrayList dans la méthode contain()
Une ArrayList est une structure de données très utilisée en Java. L'une de ses méthodes cruciales, contain(), offre la possibilité de rechercher un objet dans la liste. Une question courante se pose concernant la manière dont cette méthode détermine si deux objets sont égaux.
Le rôle de la méthode equals()
ArrayList intègre l'interface List, qui définit le contenu () méthode. Conformément à la spécification de l'interface List, la méthode contain() appelle la méthode equals() pour comparer les objets en termes d'égalité.
Comportement égal par défaut()
Par défaut, la méthode equals() compare les objets pour vérifier leur égalité référentielle, ce qui signifie que les objets sont considérés comme égaux uniquement s'ils font référence à la même instance d'objet. Ce comportement ne convient pas à la plupart des classes personnalisées, où l'égalité doit être basée sur les attributs de l'objet.
Remplacer equals() pour les classes personnalisées
Pour obtenir l'égalité sémantique pour vos classes personnalisées, vous devez remplacer la méthode equals(). Dans votre exemple, vous avez fourni une implémentation de equals() qui compare en fonction de l'attribut value de la classe Thing.
Exemple d'évaluation
Utilisation de l'implémentation fournie de equals(), évaluons la méthode contain() :
ArrayList<Thing> basket = new ArrayList<>(); Thing thing = new Thing(100); basket.add(thing); Thing another = new Thing(100); basket.contains(another); // true
La méthode contain() renvoie true car la méthode equals() remplacée compare le valorise les attributs d'une chose et d'une autre et les détermine comme étant égaux.
Par conséquent, pour permettre à la méthode contain() d'identifier correctement les objets en fonction de leurs attributs, il est essentiel de remplacer la méthode equals() et de fournir une implémentation significative à des fins de comparaison.
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!