2013-07-23 46 views
2

我收到一個錯誤,我似乎無法修復自己,這可能是一個愚蠢的錯誤,但我無法看到它。使用Map.Entry的Java通過Map無法編譯

Map<TemplateBean, Map<String, String>> templateMap = new HashMap<>(); 
//some code that fills up the map 
int biggestSize = 0; 
Map<String, String> biggestValues = null; 
for (Map.Entry<TemplateBean, Map<String, String>> entry : templateMap.values()) { 
    Map<String, String> currentValues = entry.getValue(); 
    int currentSize = currentValues.size(); 
    if (currentSize > biggestSize) { 
     biggestSize = currentSize; 
     biggestValues = currentValues; 
    } 
} 
if (biggestValues != null) { 
    values = biggestValues; 
} 

這是給在for循環這樣的錯誤:

incompatible types 
    required: Entry<TemplateBean,Map<String,String>> 
    found: Map<String,String> 

不過,我敢肯定,我得到了它是正確的,我不是在新的地圖或什麼迭代,它但是仍然是星期二早上。

問候。

回答

3

改變這一行 -

for (Map.Entry<TemplateBean, Map<String, String>> entry: 
      templateMap.values()) 

到 -

for (Map.Entry<TemplateBean, Map<String, String>> entry: 
      templateMap.entrySet()) 

退房的JavaDoc

+1

啊我的變量總是被命名爲與'values'有關的東西,所以爲什麼我在'entrySet()'上錯誤地選擇了'values()'。只要有可能就進行提升。 – skiwi