使用Entryset迭代HashMap

4
for (Map.Entry<String, Map<String, List>> entry:Map1.entrySet()) 
{
    String key=entry.getKey();
    System.out.println("Type : " +key);

    for (Map.Entry<String, List> entry1 : entry.getKey().getValue().entrySet())
    {
        System.out.println("Type : " + entry1.getKey());
    }
}

我不知道应该用什么替代entry.getKey().getValue().entrySet()。有人可以解释一下帮我理解吗?这是用于迭代嵌套映射的。
我遇到的错误是:
.\common\devtracker\process\devtr\DevTrackerImpl.java:226: cannot find symbol
symbol  : method getValue()
location: class java.lang.String
for (Map.Entry<String, List<ProjectBreakupVO>>    entry1:entry.getKey().getValue().entrySet())
3个回答

2

entry.getKey()没有getValue()方法,因为它只返回一个字符串。你可能想要的是

for (Map.Entry<String, List> entry1 : entry.getKey().getValue().entrySet())

而是去做

for (Map.Entry<String, List> entry1 : entry.getValue().entrySet())

0

你应该使用……

for (Map.Entry<String, List> entry1 : entry.getKey().getValue().entrySet())

获取内部循环的条目。


0

如果您正在尝试迭代类型为 Map<String, List> 的映射,并且在使用 myMap.keySet() 时遇到了 findbugs 问题,就像这样:

    for (String keyValue : myMap.keySet()) {
        String key = keyValue;
        List objValue = myMap.get(key);
    }

然后尝试使用更推荐的myMap.entrySet()迭代地图:

    for(Map.Entry<String, List> entry: myMap.entrySet()) {
        String key = entry.getKey();
        List objValue = entry.getValue();
    }

因此,在这种情况下嵌套for循环会是这样的:

for (Map.Entry<String, Map<String, List>> entry:Map1.entrySet()) 
{
    String key=entry.getKey();
    System.out.println("Type : " +key);

    for (Map.Entry<String, List> entry1 : entry.getValue().entrySet())
    {
        System.out.println("Type : " + entry1.getKey());
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接