我写了这段代码:
@SuppressWarnings("unchecked")
public void remove(K key){
if(this.containsKey(key)){
int slotNumber = Math.abs(key.hashCode()) % size;
TableEntry<K,V> previous = (TableEntry<K,V>)elements [slotNumber];
// first in row
if(previous.getKey().equals(key)){
elements[slotNumber] = elements[slotNumber].next;
}
else{
while(!key.equals(previous.next.getKey())){
previous = previous.next;
}
previous.next = previous.next.next
}
}
}
行中:
elements[slotNumber] = elements[slotNumber].next;
有一个错误。错误提示:Next 无法解析或者它不是一个字段。 我认为这是因为我尝试访问接下来没有属性的对象。我尝试转换到 (TableEntry),但这种干预对我没有帮助。
这是完整的类(class):HashTable
你能告诉我我做错了什么来帮助我吗? 非常感谢!
最佳答案
previous
是 TableEntry
的实例。
您的内部类TableEntry
没有名为next
的字段。
因此 previous.next
无效。
顺便问一下,为什么要重新发明轮子? Java 已经有很多 Map。
关于java - Next 不是一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33441217/