Programme Java pour comparer deux objets
Présentation
En Java, vous pouvez utiliser la méthode equals() pour comparer des objets, qui détermine si deux objets sont égaux en fonction des propriétés de l'objet. Lors de la comparaison d'objets en Java, il est très important de remplacer la méthode equals() dans la classe pour garantir que la comparaison est basée sur les propriétés requises.
Ce programme Java compare deux objets de type Person en remplaçant la méthode equals() en fonction de leurs attributs name et age. Utilisez d'abord la méthode equals() pour vérifier si les objets appartiennent à la même classe, puis comparez les attributs name et age. Si les deux propriétés correspondent, la méthode renvoie true, indiquant que les objets sont égaux. Si l'une des propriétés est différente, la méthode renvoie false, indiquant que les objets ne sont pas égaux.
Méthode
Il existe deux méthodes standards
Utilisez la méthode equals()
Non couvert
Utiliser la superposition
Utilisez les méthodes hashCode() et equals()
Exemple 1 : Remplacement de la méthode equals()
Le remplacement de la méthode equals() dans une classe permet des comparaisons personnalisées basées sur les propriétés de l'objet.
Méthode
Nous définissons d'abord une classe Person, qui contient deux variables d'instance privées : le nom et l'âge.
Nous définissons un constructeur pour la classe Person qui accepte un nom et un âge et initialise les variables d'instance avec ces valeurs.
Nous avons remplacé la méthode equals() dans la classe Person pour comparer deux objets Person en fonction de leur nom et de leur âge. La méthode equals() accepte un paramètre Object. Nous vérifions d'abord si le paramètre n'est pas vide et s'il s'agit d'une instance de la classe Person. Nous convertissons ensuite cet objet en objet Person et comparons ses propriétés de nom et d'âge aux propriétés de nom et d'âge de l'objet actuel.
Dans la méthode main(), nous créons deux objets Person avec des noms et des valeurs d'âge différents.
Nous appelons la méthode equals() sur le premier objet Person, en passant le deuxième objet Person en paramètre. La méthode equals() renvoie une valeur booléenne indiquant si les deux objets sont égaux.
Enfin, nous utilisons System.out.println() pour imprimer les résultats de la comparaison sur la console
public class ObjectComparator { public static void main(String[] args) { // Create two objects to compare Person person1 = new Person("Alice", 25); Person person2 = new Person("Bob", 30); // Compare the two objects boolean areEqual = person1.equals(person2); System.out.println("Are the two objects equal? " + areEqual); } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public boolean equals(Object obj) { if (obj == null) return false; if (!(obj instanceof Person)) return false; Person otherPerson = (Person) obj; return this.name.equals(otherPerson.name) && this.age == otherPerson.age; } }
Explication
est :Explication
Dans cet exemple, nous créons deux objets Person avec des noms et des âges différents, puis appelons la méthode equals du premier objet pour le comparer avec le deuxième objet. La méthode equals est définie dans la classe Person et vérifie si les deux objets ont les mêmes propriétés de nom et d'âge. Enfin, nous imprimons les résultats de la comparaison sur la console.
Sortie
Are the two objects equal? false
Exemple 2 : Ne pas remplacer la méthode equals()
La méthode equals() n'est pas remplacée, les objets sont comparés en fonction de leurs références plutôt que de leurs propriétés.
Méthode
Nous définissons d'abord une classe Person, qui contient deux variables d'instance privées : le nom et l'âge.
Nous définissons un constructeur pour la classe Person qui accepte un nom et un âge et initialise les variables d'instance avec ces valeurs.
Dans la méthode main(), nous créons deux objets Person avec les mêmes valeurs de nom et d'âge.
Nous appelons la méthode equals() sur le premier objet Person et passons le deuxième objet Person en tant que paramètre. Puisque nous n’avons pas remplacé la méthode equals() dans la classe Person, l’implémentation par défaut de la méthode equals() héritée de la classe Object est utilisée. L'implémentation vérifie si les deux objets sont le même objet (c'est-à-dire qu'ils ont la même adresse mémoire) et renvoie vrai si c'est le cas. Étant donné que les objets person1 et person2 ont des adresses mémoire différentes, la méthode equals() renvoie false.
Enfin, nous utilisons System.out.println() pour imprimer les résultats de la comparaison sur la console.
public class ObjectComparator { public static void main(String[] args) { // Create two objects to compare Person person1 = new Person("Alice", 25); Person person2 = new Person("Alice", 25); // Compare the two objects boolean areEqual = person1.equals(person2); System.out.println("Are the two objects equal? " + areEqual); } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } }
Explication
est :Explication
Dans cet exemple, nous créons deux objets Person avec le même nom et le même âge, puis appelons la méthode equals pour comparer le premier objet avec le deuxième objet. Puisque nous n’avons pas remplacé la méthode equals dans la classe Person, l’implémentation par défaut héritée de la classe Object est utilisée. Cette implémentation vérifie si les deux objets sont le même objet (c'est-à-dire ont la même adresse mémoire) et renvoie vrai si c'est le cas. Étant donné que les objets person1 et person2 ont des adresses mémoire différentes, la méthode equals renvoie false. Enfin, nous imprimons les résultats de la comparaison sur la console.
Sortie
Are the two objects equal? false
Exemple 3 : Utilisation des méthodes hashCode() et equals()
La méthode equals() n'est pas remplacée, les objets sont comparés en fonction de leurs références plutôt que de leurs propriétés.
Méthode
Nous avons créé deux objets de classe Personne, personne1 et personne2, avec le même nom et le même âge.
Nous appelons ensuite les méthodes hashCode() et equals() sur person1.
Dans la classe Person, nous remplaçons la méthode hashCode() et utilisons la méthode Objects.hash() pour générer un code de hachage basé sur les attributs de nom et d'âge de l'objet.
然后我们重写equals()方法,根据它们的姓名和年龄属性来比较两个Person对象。该方法首先检查对象是否属于同一类,如果是,则使用Objects.equals()方法检查它们的姓名和年龄属性是否相等。
在main()方法中,我们使用&&运算符通过hashCode()方法检查person1和person2的哈希码是否相同,并且通过equals()方法返回true。
最后,我们打印出一个消息,指示这些对象是否相等。
public class ObjectComparator { public static void main(String[] args) { // Create two objects to compare Person person1 = new Person("Alice", 25); Person person2 = new Person("Alice", 25); // Compare the two objects using hashCode and equals methods boolean areEqual = person1.hashCode() == person2.hashCode() && person1.equals(person2); System.out.println("Are the two objects equal? " + areEqual); } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public int hashCode() { return Objects.hash(name, age); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof Person)) return false; Person other = (Person) obj; return Objects.equals(name, other.name) && age == other.age; } }
Explanation
的中文翻译为:解释
在这个例子中,我们创建了两个具有相同姓名和年龄的Person对象,然后调用第一个对象的hashCode()和equals()方法来与第二个对象进行比较。
在Person类中,我们重写了hashCode()和equals()方法,以便根据它们的name和age属性来比较对象。hashCode()方法返回name和age属性的组合的哈希码,equals()方法检查对象是否属于同一类,并且具有相同的name和age属性。
最后,我们使用&&运算符来检查两个对象的哈希码是否相同,并且equals()方法是否返回true。如果两个条件都为true,我们打印出对象相等的信息。否则,我们打印出对象不相等的信息。
输出
The two person objects are equal
结论
这个Java程序使用equals()方法来比较两个Person对象的属性,该方法已在Person类中被重写。
该程序展示了定制对象比较的重要性,并突出了Java在实现自定义比较逻辑方面提供的灵活性。
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
