创建链表的arraylist

时间:2014-04-23 09:32:56

标签: java collections arraylist linked-list

我想创建一个链式哈希表。它需要是一个链表的列表,这些结构说我应该按如下方式进行:

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

有什么问题? 有更好的方法吗?

谢谢!

3 个答案:

答案 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<>();

现在您的代码应该可以工作了。