创建一个通用数组以在java中使用哈希表

Zac*_*dle 1 java generics hash nullpointerexception

我理解哈希表背后的想法,但实现变得令人沮丧.我做了一些阅读并得到了不同的答案.我已经读过,我可以实现一个通用的对象数组,如下所示:

TableContainer[] classTable = 
    (TableContainer<Object,Object>[]) new TableContainer[256];
Run Code Online (Sandbox Code Playgroud)

tableContainer的位置是:

class TableContainer<key,val>{
    Object key = null;
    Object val = null;
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当我尝试在函数中传递以下代码时:

classTable[i].key = x
Run Code Online (Sandbox Code Playgroud)

我得到一个空指针异常.我知道在java中创建泛型数组会因为类型擦除而变得混乱,但我认为上面的实现会起作用.有没有办法创建一个列表或泛型数组用作哈希表?(不允许使用散列表/散列映射类)

Joc*_*hen 6

您仍然必须先初始化数组中的对象引用,然后才能使用它们.像这样

tableContainer[] a = new tableContainer<Whatever, SomeClass>[SIZE];
for ( int i = 0 ; i < a.length; i++ ) {
     a[i] = new tableContainer<Whatever, SomeClass>();
}
Run Code Online (Sandbox Code Playgroud)

当然,您必须将数组初始化为大于0的大小,这与您的示例中的不同.