我有以下定义,很好
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>>();
如何做类似的事情,可以更改列表类型。
谢谢, 费多尔
答案 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>>();