2013-05-06 89 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(); 
    } 
}