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

3 回答 3

2

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

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

而是做

for (Map.Entry<String, List> entry1 : entry.getValue().entrySet())
于 2012-11-23T03:53:28.047 回答
0

如果您尝试遍历 type 的 map Map<String, List>,并且当您像这样使用时遇到findbugs问题:myMap.keySet()

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

所以在这种情况下嵌套 forloop 就像:

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());
    }
}
于 2014-10-05T23:50:46.140 回答
0

你应该使用....

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

获取内部循环的条目。

于 2012-11-23T04:08:20.957 回答