2 回答
TA贡献1840条经验 获得超5个赞
我会迭代这样的设置,如下所示:
Map<String, List<String>> map = new HashMap<>();
List<String> list = Arrays.asList("One", "Two", "Three");
for (Map.Entry<String, List<String>> mapValue : map.entrySet()) {
for (String listValue : mapValue.getValue()) {
// Do stuff
}
}
您的代码不起作用的原因是因为您定义pair为Map.Entry pair = (Map.Entry)it.next();,没有任何类型。这会导致pair.getValue()returnObject而不是某种类型的List,这就是为什么你不能在 for 循环中迭代它。
使用您的代码进行修复的方法是更改:
Map.Entry pair = (Map.Entry)it.next();
到:
Map.Entry<String, List<String>> pair = (Map.Entry<String, List<String>>) it.next();
TA贡献1865条经验 获得超7个赞
你只需要在你的代码中使用泛型,然后它就可以完美运行。这是你的泛型代码,
Map<String, List<String>> map = new HashMap<String, List<String>>();
List<String> list = Arrays.asList("One", "Two", "Three");
map.put("key_one", list);
Iterator<Entry<String, List<String>>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, List<String>> pair = it.next();
System.out.println(pair.getKey());
System.out.println(pair.getValue().getClass());
for (String element : pair.getValue()) {
System.out.println(element);
}
}
添加回答
举报