2017-08-07 17 views
1

我正在解决一个关于在数组中找到重复项的问题。我使用了一个HashMap。但是当我将它包含在IF条件中时,getValue()函数给了我一个错误。为什么getValue()函数不能用于HashMap?

for(Map.Entry m : hm.entrySet()) 
{ 
    if(m.getValue() > 1) 
    { 
     System.out.println(m.getKey()); 
    } 
} 

但它似乎当我用铸字

for(Map.Entry m : hm.entrySet()) 
{ 
    int count = (int)m.getValue(); 
    if(count > 1) 
    { 
     System.out.println(m.getKey()); 
    } 
} 

为什么会这样好工作?

+1

什么是那些K,V定义地图 –

+0

什么错误被抛出? –

+0

HashMap hm = new HashMap (); – batman007

回答

3

为什么会发生这种情况? ...

,因为您使用的原料类型条目...

Map.Entry必须在通用K型地图类型,V

例如匹配:如果定义地图形式

Map<String, Integer> hm = new HashMap<>(); 

那么你可以做

for (Entry<String, Integer> m : hm.entrySet()) { 
    if (m.getValue() > 1) { 
     System.out.println(m.getKey()); 
    } 
} 

bacause这样m.getValue() > 1自动拆箱整型成一个int使得有效对抗比较字面INT 1

相关问题