如何动态初始化java链表的数组大小

时间:2013-05-06 04:20:23

标签: java generics casting linked-list hashtable

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

//构造函数

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 个答案:

答案 0 :(得分:1)

This would work:

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果T是您的班级MyConstruct<T>中的通用参数,那么您在创建LinkedList<T>数组时会遇到问题。类型擦除会在运行时将其设为LinkedList[],并且没有好的方法可以添加代码来检查是否向数组中添加了正确类型的LinkedList

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

答案 3 :(得分:0)

试试这个

@SuppressWarnings("unchecked")
MyConstruct(int initSize){
    hashTable = new LinkedList[initSize];
    for(int i = 0; i < initSize; i++) {
        hashTable[i] = new LinkedList();
    }
}