Création d'une méthode hashCode () - Java

J'ai un peu de mal à écrire un hashCode() méthode d'une classe que j'ai créée. Cette classe est destinée à être utilisée à l'intérieur d'un TreeSet, et en tant que tel, il implémente Comparable. La classe comporte les variables suivantes:

public class Node implements Comparable<Node> {
   Matrix matrix;
   int[] coordinates= new int[2];
   Node father;
   int depth;
   int cost;

Voici la mise en œuvre de la compareTo() méthode. Je veux le TreeSet pour organiser ces nœuds des structures par leur coût, par conséquent, compareTo() retourne le résultat d'une simple soustraction.

public int compareTo(Node nodeToCompare) {
    return this.cost - nodeToCompare.cost;
}

J'ai aussi mis en place un equals() méthode.

public boolean equals(Object objectToCompare) {
    if(objectToCompare== this) {return true;}
    if(objectToCompare== null || objectToCompare.getClass()!= this.getClass()) {return false;}

    Node objectNode= (Node) objectToCompare;
    return this.father.equals(objectNode.father) &&
            this.depth== objectNode.depth &&
            this.cost== objectNode.cost &&
            this.matrix.equals(objectNode.matrix) &&
            Arrays.equals(this.coordinates, objectNode.coordinates);
}

Ayant dit tout cela, j'ai quelques questions:

  1. Depuis que j'ai mis en place un nouveau equals() méthode, dois-je mettre en place un nouveau hashCode() méthode?
  2. Comment puis-je mettre en place une nouvelle hashCode method() avec ces variables? (Notez que la variable de la matrice du type de la Matrice a une hashCode() méthode de mise en œuvre)

C'est tout!

source d'informationauteur Gonçalo Lourenço