Создание метода hashCode() — Java

У меня возникли проблемы с написанием метода hashCode()для класса, который я создал. Этот класс предназначен для использования внутри TreeSet, поэтому он реализует Comparable. Класс имеет следующие переменные:

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

Вот реализация метода compareTo(). Я хочу, чтобы TreeSetорганизовал эти структуры узлов по их стоимости, поэтому compareTo()возвращает результат простого вычитания.

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

Я также реализовал метод equals().

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);
}

Сказав все это, у меня есть несколько вопросов:

  1. Поскольку я реализовал новый метод equals(), следует ли мне реализовать новый метод hashCode()?
  2. Как реализовать новый метод hashCode method()с этими переменными? (Обратите внимание, что для переменной matrix типа Matrix реализован метод hashCode())

Вот и все!

18
задан Lavekush Agrawal 24 October 2017 в 09:03
поделиться