2011-05-18 89 views

回答

3

我想你想

ArrayList<Hashtable<String, String>> info = new ArrayList<Hashtable<String, String>>(); 
3

你可能想:

ArrayList<Hashtable<String, String>> info = 
    new ArrayList<Hashtable<String, String>>(); 

,這在某種程度上與類型推斷和Guava這樣的庫來簡化:

ArrayList<Hashtable<String, String>> info = Lists.newArrayList(); 
+0

hi, Hashtable [] info = new Hashtable [size]; 不工作:S – Winter 2011-05-19 21:37:32

+0

@Winter:Bah,已經忘記了Java泛型與陣列的痛苦。將刪除那一點。 – 2011-05-19 22:41:48

2

儘量確保您使用抽象的接口使用的是儘可能的集合。

List<Map<String, String>> info= new ArrayList<Map<String, String>>(); 

然後你就可以添加你的哈希表

Map<String, String> infoElement= null; 
for(something in someOtherThing) { 
    infoElement= new Hashtable<String, String>(); 
    // add your logic 
    info.add(infoElement); 
} 
+0

@Stephen,感謝您的更正。 – 2011-05-18 17:41:31

+0

我仍然有問題。我在一個for循環中有這個infoElement,每次我更新infoElement所有的info元素都會採用新的infoElement值,因爲info.add方法只設置了一個指向infoElement的指針...... – Winter 2011-05-19 22:02:06

+0

@Winter - 好吧所以你需要做的是創建爲您希望添加和更新的下一個「infoElement」創建一個新的HashTable。如果你不確定哪些包含你正在使用的集合,那麼集合中的集合可能會變得非常棘手。我在Hashes下用Hashes做了很多工作......相信我,記住你的深度真的很有趣。 – 2011-05-19 23:45:40

4

一個VectorListHashtableMap,所以你想要的是地圖列表。

我建議你使用ArrayList而不是VectorHashMap代替Hashtable,分別爲(as discussed here和其他許多問題),但最重要的我建議你改變你的要求。

在大多數情況下,您需要列表地圖而不是地圖列表,如果您需要,我會使用衆多可用的自定義實現之一,首先是Guava's Multimap