2013-05-06 91 views
-1

我有一个构造函数,它指定我的链表应该是多大的数组,但我有麻烦初始化数组的大小。这就是我想,但我得到一个错误,每当我尝试初始化数组:如何动态初始化链表的大小java

//构造

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

回答

1

This would work:

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

但实际上,只是用列表的列表!

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

或避免原始类型:'hashTable中=(链表 [])新链表 [initSize];' – newacct 2013-05-06 07:00:26

0

如果你想改变一个数组列表,你可以像这样做: Arrays.asList(阵列)

+0

这不回答这个问题。 – 2013-05-06 05:53:20

0

如果T是你MyConstruct<T>类的通用参数,那么你会在创建LinkedList<T>的数组时遇到问题。在运行时,类型擦除将使这个变成LinkedList[],并且没有好方法来添加代码来检查是否将正确类型的LinkedList添加到数组中。

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

0

尝试这种

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