Как мне определить хороший хэш-код для кругового связанного списка в Java?

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

Цель структуры данных списка - иметь возможность сравнивать циклические слова. Итак ... "картинка" и "турпик" - это одно и то же циклическое слово, поэтому два списка будут равны.

Поэтому я переопределяю equals () при сравнении двух списков, и я читал, что всякий раз, когда вам нужно переопределить equals () , вы также должны переопределить hashCode () . Однако я не очень хорошо понимаю, как это сделать.

Как мне определить хороший хэш-код для того, что я настроил? Что мне следует учитывать? В примере с «картинкой» и «турпиком» два списка равны, поэтому их хэш-код должен быть одинаковым. Есть идеи?

Спасибо, Христо

public class Letter {
 char value;
 Letter theNextNode;

 /**
  * Default constructor for an element of the list.
  * 
  * @param theCharacter - the value for this node.
  */
 Letter(char theCharacter) {
  this.value = theCharacter;
 }
}


public class CircularWord {

 /*
  * Class Variables
  */
 Letter head;
 Letter tail;
 Letter theCurrentNode;

 int iNumberOfElements;


 /**
  * Default Constructor. All characters that make up 'theWord' are stored in a 
  * circular linked list structure where the tail's NEXT is the head. 
  */
 public CircularWord(String theWord) {

  char[] theCharacters = theWord.toCharArray();

  for (int iIndex = 0; iIndex < theCharacters.length; iIndex++) {
   this.addElement(theCharacters[iIndex]);
  }

  this.theCurrentNode = head;
  this.iNumberOfElements = theCharacters.length;
 }
}
10
задан Hristo 19 September 2010 в 19:45
поделиться