Я создал структуру данных циклического связанного списка, которая представляет слово, и каждый элемент в списке является буквой от слова. В нижней части моего вопроса находятся определения класса списка и элемента списка.
Цель структуры данных списка состоит в том, чтобы иметь возможность сравнивать циклические слова. Итак... "picture" и "turepic" - это одно и то же циклическое слово, поэтому оба списка будут равны.
Итак, я переопределяю equals()
при сравнении двух списков, и я прочитал, что всякий раз, когда вам нужно переопределить equals()
, вы также должны переопределить hashCode()
. Тем не менее, я действительно не очень хорошо понимаю, как это сделать.
Как мне определить хороший хэш-код для того, что я создал? Что я должен учитывать? В примере "picture" и "turepic" оба списка равны, поэтому их хэш-код должен быть одинаковым. Любые идеи?
Спасибо, Христо
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 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;
}
}