Maison > Java > javaDidacticiel > Comment remplacer la méthode equals() en Java pour une comparaison précise des objets ?

Comment remplacer la méthode equals() en Java pour une comparaison précise des objets ?

Linda Hamilton
Libérer: 2024-12-26 21:15:14
original
475 Les gens l'ont consulté

How to Override the equals() Method in Java for Accurate Object Comparison?

Remplacer la méthode equals() en Java pour la comparaison d'objets

En Java, la méthode equals() vous permet de déterminer si deux objets sont égaux. Par défaut, equals() compare les références d'objets, ce qui n'est pas toujours le comportement souhaité. Remplacer la méthode Equals() vous permet de définir votre propre logique de comparaison.

Scénario :

Vous souhaitez remplacer la méthode Equals() dans une classe People qui a deux champs de données : nom et âge. Votre objectif est de comparer des objets de personnes en fonction de leurs noms et de leurs âges.

Méthode Equals() personnalisée :

Pour remplacer la méthode Equals(), vous la définissez dans le Classe de personnes :

public boolean equals(People other) {
    // Null check and class check
    if (other == null || getClass() != other.getClass()) {
        return false;
    }

    // Downcast to People
    People otherPeople = (People) other;

    // Compare fields using == for primitive types (age) and equals() for objects (name)
    return name.equals(otherPeople.name) && age == otherPeople.age;
}
Copier après la connexion

Correction de la comparaison des types primitifs :

L'original Le code a tenté d'utiliser equals() pour comparer le champ age, qui est un type primitif. Les types primitifs ont leurs propres opérateurs de comparaison d'égalité (dans ce cas, ==). La modification de age.equals(other.age) en age == other.age résout ce problème.

Exemple d'utilisation :

Dans la classe Main, une ArrayList de Personne les objets sont créés. La méthode equals() est utilisée pour comparer des personnes et imprimer les résultats :

ArrayList<Person> people = new ArrayList<>();
people.add(new Person("Subash Adhikari", 28));
// ...

// Compare people objects
for (int i = 0; i < people.size() - 1; i++) {
    for (int y = i + 1; y <= people.size() - 1; y++) {
        boolean check = people.get(i).equals(people.get(y));

        // Print comparison result
        System.out.println("-- " + people.get(i).getName() + " - VS - " + people.get(y).getName());
        System.out.println(check);
    }
}
Copier après la connexion

Sortie :

Le programme imprimera si les personnes comparées sont égales ou non . Par exemple :

-- Subash Adhikari - VS - K false
-- Subash Adhikari - VS - StackOverflow false
-- Subash Adhikari - VS - Subash Adhikari true
Copier après la connexion

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