-1

我有一个构造函数,它指定我的链表数组应该有多大,但是我在初始化数组的大小时遇到​​了麻烦。这就是我正在尝试的,但每当我尝试初始化数组时都会出现错误:

// 构造函数

MyConstruct(int initSize){
    hashTable = (LinkedList<T>[]) new Object[initSize];
}

错误:java.lang.Object;不能转换为 [Ljava.util.LinkedList;

如何创建一个链表数组,我可以在其中执行以下操作:

for(int i = 0; i < hashTable.size(); i++){
    hashTable[i].add(i + i);
}
4

4 回答 4

1

起作用:

MyConstruct(int initSize){
    hashTable = new LinkedList[initSize];
}

但实际上,只需使用列表列表!

MyConstruct(int initSize){
    hashTable = new LinkedList<LinkedList<T>>();
}
于 2013-05-06T04:22:23.660 回答
0

如果您想将数组更改为列表,可以这样做:Arrays.asList(array)

于 2013-05-06T04:25:26.023 回答
0

如果T是类中的泛型参数MyConstruct<T>,那么在创建LinkedList<T>. 类型擦除将LinkedList[]在运行时使其成为 a,并且没有好的方法可以添加代码来检查是否LinkedList向数组添加了正确的类型。

不要混淆数组和泛型。相反,请使用 a List<LinkedList<T>>。那应该可以正常工作。但是,您的链表列表的目的是什么?MultiMap来自 Google Guava的 a 会更好吗?

于 2013-05-06T04:25:47.847 回答
0

尝试这个

@SuppressWarnings("unchecked")
MyConstruct(int initSize){
    hashTable = new LinkedList[initSize];
    for(int i = 0; i < initSize; i++) {
        hashTable[i] = new LinkedList();
    }
}
于 2013-05-06T04:26:06.900 回答