2011-01-29 33 views
3

我有以下全局变量:的Java:参数化Map对象

private Map<String,List<String>> network; 

我实例在我的构造是这样的:

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

以上实例不能编译。显然,当我参数化Map时,我必须声明它是一个专门从String到ArrayList的映射,而不是使用更一般的List?任何见解,为什么我必须这样做?

+0

你应该看看番石榴Multimap。具体来说就是ListMultimap实现。 – rfeak 2011-01-29 21:37:28

回答

5

对不起,你不能继承内部类:

network = new Hashtable<String,List<String>>(); 

但是当你添加一个成员,你可以创造的价值作为一个ArrayList。

network.put("Key", new ArrayList<String>()); 
3

这是相当相反:当您创建新的哈希表,你必须指定你要使用的ArrayList作为值。相反,你应该说

new Hashtable<String, List<String>>(); 

和您将用作值的List实现的选择仍然是免费的。