【问题标题】:creating an arraylist of linkedlist创建linkedlist的arraylist
【发布时间】:2014-06-08 01:12:54
【问题描述】:

我想创建一个链式哈希表。它需要是链表的列表,指令说我应该这样做:

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;
}

但是,当我在“main”中运行它时,我得到了这个异常:

线程“主”java.lang.NullPointerException 中的异常

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

谢谢!

【问题讨论】:

  • 在哪里初始化 hashTable 变量(实际上是 ArrayList)?在向其中添加元素之前,您需要在某处说“新”。

标签: java collections arraylist linked-list


【解决方案1】:

您刚刚声明了名为 hashTable 的 ArrayList 变量,但没有对其进行初始化。在这个阶段不会分配内存。对于 Java,如果您谈论的是原始类型,它们具有编译器分配的默认值。对于引用类型(Collection Framework),它们只是充当一个钩子,您需要实例化该类并将其分配给引用变量。

你写的代码没有错

hashTable = new ArrayList<LinkedList<String>>();

在另一行。

或者,您也可以在一行中执行此操作。

ArrayList<LinkedList<String>> hashTable = new ArrayList<>();

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

【讨论】:

    【解决方案2】:

    假设 hashTable 是一个成员变量,你可以在构造函数中这样做;

    hashTable = new ArrayList&lt;LinkedList&lt;String&gt;&gt;();

    【讨论】:

      【解决方案3】:

      这个

      ArrayList<LinkedList<String>> hashTable;
      

      应该是

      ArrayList<LinkedList<String>> hashTable = new ArrayList<>();
      

      即你应该实例化 hashTable。

      【讨论】:

        猜你喜欢
        • 2011-08-16
        • 2017-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多