Переопределение hashCode в Java для конкретного случая

Я знаю, что есть и другие вопросы об общих передовых методах при использовании hashCode и equals, но у меня есть очень конкретный вопрос.

У меня есть класс, у которого в качестве переменной экземпляра есть массив того же класса. Чтобы быть более точным, вот код:

Class Node{
    Node arr[] = new Node[5];
}

Мне нужно перезаписать hashCode для класса Node, и массив является важным решающим фактором при определении того, являются ли два узла одинаковыми. Как я могу эффективно включить массив в расчет хэш-кода?

- Изменить -

Я пытаюсь проверить, одинаковы ли два узла, что означает, что у них одинаковое количество дочерних узлов, и что эти дети приводят к точно таким же состояниям. Поэтому я эффективно пытаюсь сравнить поддеревья на двух узлах. Мне интересно, могу ли я использовать хеширование для проверки равенства.

Я думаю, что мне действительно нужно хешировать все поддерево, но я не уверен, как бы я это сделал, учитывая рекурсивный характер определения моего класса.

6
задан efficiencyIsBliss 4 May 2011 в 17:44
поделиться