[JAVA] À propos des méthodes equals () et hashcode ()

Je suis nouveau sur Java.

Cette fois, j'ai créé une classe appelée Information, et dedans ** ・ adresse [Chaîne] ** ** ・ phone (numéro de téléphone) [String] ** J'ai fait un champ appelé. De plus, nous avons préparé des getters et des setters pour chaque article.

Ensuite, afin de créer une fonction de recherche de contact, créez une classe Person, et dans celle-ci, ** ・ nom [String] ** ** ・ anniversaire [int] ** ** ・ informations [Information] ** J'ai créé un champ appelé, défini le nom, l'anniversaire et les informations selon le facteur du constructeur, et préparé chaque getter.

Ensuite, j'ai essayé d'ajouter les trois méthodes suivantes à la classe Information. ** ・ toString () ** ** · équivaut à () ** ** ・ hashcode () **

À ce stade, si les informations sont correctes, cela signifie que l'adresse et le numéro de téléphone correspondent. De plus, toString () renvoie désormais tous les champs sous forme de chaînes.

toString () et equals () ont été complétés d'une manière ou d'une autre, en s'appuyant sur les informations sur le net. Cependant, j'ai du mal parce que je ne comprends pas hashcode ().

Le code que j'ai écrit maintenant est ci-dessous. Je pense qu'il y a de nombreux points qui ne peuvent être atteints que hashcode (), donc je vous serais reconnaissant de bien vouloir commenter ces points également.

Person.class



public class Person {

  private String name;
  private int birthday;
  private Information information;

  public Person(String name, int birthday, Information information) {
    this.name = name;
    this.birthday = birthday;
    this.information = information;
  }

  public String getName() {
    return this.name;
  }

  public int getBirthday() {
    return this.birthday;
  }

  public Information getInformation() {
    return this.information;
  }
}

Information.class



public class Information {

  private String address;
  private String phone;

  public Information() {}

  public String getAddress() {
    return this.address;
  }

  public String getPhone() {
    return this.phone;
  }

  public void setAddress(String address) {
    this.address = address;
  }

  public void setPhone(String phone) {
    this.phone = phone;
  }

	public String toString(){
    String str = address+","+phone;
    return str;
  }
  
  public boolean equals(Object other) {
    
     if (this == other) { 
            return true;
        }

     if (!(other instanceof Information)) { 
            return false;               // 
        }

        Information otherInformation = (Information) other;
     if ((this.address == otherInformation.getAddress()) && (this.phone == otherInformation.getPhone())){ 
            return true;
        }
        return false;
    }
  
	public int hashcode(){
   //Je ne sais pas.
  }

}

Recommended Posts

À propos des méthodes equals () et hashcode ()
À peu près la même et la même valeur
[Java] HashCode et remplacement égal
À propos de la méthode Pluck et de la méthode ID
À propos de la relation entre les méthodes HTTP, les actions et CRUD
À propos des méthodes Java statiques et non statiques
== et égal
Comprendre equals et hashCode en Java
Pensez aux différences entre les fonctions et les méthodes (en Java)
À propos du fonctionnement de next () et nextLine ()
À propos de la différence entre irb et pry
À propos des méthodes singulières
À propos de la méthode de HttpServlet ()
À propos de la méthode
Fonctions et méthodes
À propos du paquet
À propos des méthodes Ruby
Pensez à la combinaison de Servlet et Ajax
[Rails / Active Record] À propos de la différence entre créer et créer!
À propos de next () et nextLine () de la classe Scanner
Un mémo sur le flux de Rails et Vue
Sortie sur la méthode, partie 2
[Ruby] J'ai réfléchi à la différence entre each_with_index et each.with_index
À propos de la classe StringBuilder
Commentaire: à propos de l'interface
La comparaison d'énumération est ==, et equals est bonne [Java]
À propos du pipeline d'actifs
À propos de la double fonction -java
[Grails] À propos de la zone de paramétrage et des éléments de paramétrage de application.yml
À propos de Bean et DI
À propos des classes et des instances
Différences entre les classes et les instances dans Ruby
À propos de l'opérateur ternaire
À propos de gets et gets.chomp
À propos des méthodes d'instance Ruby
À propos de la méthode de longueur
À propos de l'appel des méthodes d'instance
À propos de la redirection et du transfert
À propos du module Kernel
[Java] À propos de Objects.equals () et examen de la comparaison de chaînes (== et égal à)
À propos du chargement et de l'initialisation des classes au démarrage de la JVM
À propos de l'encapsulation et de l'héritage
[Note technique] À propos des avantages et des inconvénients de Ruby
À propos de la méthode cartographique
À propos de Serializable et serialVersionUID
À propos de la méthode des ancêtres
[Sortie] À propos de la base de données
À propos de la méthode to_s.
[Ruby] Questions et vérification du nombre d'arguments de méthode
Recommandation de l'opération set par Java (et compréhension de equals et hashCode)
Remplaçons la différence entre == (identité) et méthode equals (équivalence)
[Java] J'ai réfléchi aux mérites et aux utilisations de "interface"
À propos de la gestion de Null