0

我有以下定义很好

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>>();

我怎么能做这样的事情,列表类型可以改变。

谢谢,费多尔

4

3 回答 3

2

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

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

于 2012-12-03T11:25:50.313 回答
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>>();
于 2012-12-03T11:31:12.610 回答
1

您不能将对象用作类类型(您尝试使用listParents实例在映射中定义字符串到字符串的映射。我想您来自c可以构建结构的世界,typedef但在这种情况下,您应该遵循其中一个答案发布了正确的定义,因为Java不支持 typedef

于 2012-12-03T11:27:40.543 回答