head无法解析或不是字段错误

时间:2018-02-10 21:07:02

标签: java error-handling

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,我不知道如何修复它。

1 个答案:

答案 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的可访问字段。