get()方法将配置作为输入,并返回该配置的记录(如果它已在哈希表中)。定义的变量和方法I如下:
/*** Variables ***/
private LinearNode<TTTRecord> head = null;
private LinearNode<TTTRecord> current;
private LinearNode<TTTRecord> Hashnode;
private LinkedList list;
private LinkedList[] hashtable;
private int numElements;
private int index;
private String[] configArray;
public void remove(String config) throws InexistentKeyException {
index = hashfunction(config);
current = hashtable[index].head;
if (hashtable[index].isEmpty())
throw new InexistentKeyException(config);
if (current.getElement().getConfiguration().equals(config)) {
hashtable[index].remove(current.getElement());
return;
}
while ((current.getNext() != null) && (current.getNext().getElement() != null)) {
if (current.getElement().getConfiguration().equals(config)) {
hashtable[index].remove(current.getElement());
return;
}
current = current.getNext();
}
if (current.getElement() == null && current.getNext() == null)
throw new InexistentKeyException(config);
}
我不确定为什么行current = hashtable[index].head;
显示错误head cannot be resolved or is not a field
,我不知道如何修复它。
答案 0 :(得分:1)
您的哈希表是一系列链表。
执行hashtable[index]
时,会为您提供一个链接列表。现在,要获取链接列表中的第一个元素,请使用LinkedList::getFirst
。
hashtable[index].getFirst();
如果Linkedlists本身存储了一些有用的东西,比如自定义类型,则需要在字段的声明中指定,否则Java将假定它们包含任何内容,并将它们全部视为Object
&#39; s。
private LinkedList<MyType>[] hashTable;
然后你可以current = hashtable[index].getFirst().head;
(假设MyType
有一个名为head
的可访问字段。