使用字符串将对象添加到列表

时间:2012-12-03 11:22:14

标签: java

我有以下定义,很好

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

但是现在我需要扩展它,第一个字符串也应该是类型列表。 我尝试使用以下代码,添加新列表并更改要保留的第一个字符串 listPrents但我收到了一些错误。

private Map<String, String> listParents = new HashMap<String, String>();
private List<Map<listParents, String>> list = new ArrayList<Map<String, String>>();

如何做类似的事情,可以更改列表类型。

谢谢, 费多尔

3 个答案:

答案 0 :(得分:2)

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

但通常我不鼓励使用列表作为hashmap中的键。

答案 1 :(得分:1)

您不能将对象用作类类型(您尝试使用listParents实例在地图内定义字符串到字符串的映射。我猜您来自c世界,您可以typedef您的结构,但在这种情况下,您应该按照正确定义发布的答案之一,Java不支持typedef

答案 2 :(得分:1)

你要做的事情是不可能的,甚至在java中也不可见,因为泛型只是语法上的含义。在编译时,不会对这些集合进行类型检查。泛型只是强制您只使用与泛型中给定类型对应的类。 你可以这样做:

private List<Map<List<?>, String>> list = new ArrayList<Map<String, String>>();

你可以指定吗?进一步使用extends和super关键字来定义适合结构的类。

或者更简单的解决方案:

private List<Map<List<Object>, String>> list = new ArrayList<Map<String, String>>();