2011-05-18 87 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