我想创建一个链式哈希表。它需要是一个链表的列表,这些结构说我应该按如下方式进行:
ArrayList<LinkedList<String>> hashTable
初始化表我使用此代码:
public static ArrayList<LinkedList<String>> createNewTable (){
double tableSize = Math.pow(baseTableSize, initialTableExponent);
for (int i = 0; i < tableSize; i++){
LinkedList<String> row = new LinkedList<String>();
hashTable.add(row);
}
return hashTable;
}
但是当我在&#34; main&#34;我得到了这个例外:
线程中的异常&#34; main&#34;显示java.lang.NullPointerException
有什么问题? 有更好的方法吗?
谢谢!
答案 0 :(得分:5)
此
ArrayList<LinkedList<String>> hashTable;
应该是
ArrayList<LinkedList<String>> hashTable = new ArrayList<>();
即。你应该实现hashTable。
答案 1 :(得分:1)
假设hashTable是一个成员变量,你可以在构造函数中执行此操作;
hashTable = new ArrayList<LinkedList<String>>();
答案 2 :(得分:0)
您刚刚声明了名为 hashTable 的 ArrayList 变量,但没有对其进行初始化。在此阶段不会分配内存。对于 Java,如果您谈论的是原始类型,则它们具有由编译器分配的默认值。对于引用类型(Collection Framework),它们只是作为一个钩子,你需要实例化类并将其分配给引用变量。
你写的代码没有错
hashTable = new ArrayList<LinkedList<String>>();
在另一行。
或者,您也可以在一行中执行此操作。
ArrayList<LinkedList<String>> hashTable = new ArrayList<>();
现在您的代码应该可以工作了。