在HashMap <character,integer>类型中放置(Character,Integer)的方法不适用于参数(char,int)

时间:2017-07-04 23:02:56

标签: java hashmap

我收到此错误,我不知道为什么。

这是我的代码:

char a[]=str.toCharArray();
    HashMap <Character,Integer> hm=new HashMap<Character,Integer>();
    for(int i=0;i<a.length;i++){
        if(hm.containsKey(a[i])){
            hm.put(a[i], hm.get(a[i])+1);
        }
    }

1 个答案:

答案 0 :(得分:-1)

代码符合并正确执行(我刚刚为缺少的字符添加了初始化hm.put(a[i], 1);)。

char a[]=str.toCharArray();
HashMap<Character,Integer> hm=new HashMap<Character,Integer>();
for(int i=0;i<a.length;i++){
    if(hm.containsKey(a[i])){
        hm.put(a[i], hm.get(a[i])+1);
    }else{
        hm.put(a[i], 1);
    }
}

严格地说编译器是正确的,因为char不是Characterint不是Integer,但是自动装箱应该处理这个问题。

所以我们错过了一些背景。

我可以重现同样错误的唯一方法是在测试类中添加一个模拟Character类,如下所示:

public class OneTest {

    private class Character{
    }
    @Test
    public void test() {
        String str = "AABcDD";
        char a[]=str.toCharArray();
        HashMap<Character,Integer> hm=new HashMap<Character,Integer>();
        for(int i=0;i<a.length;i++){
            if(hm.containsKey(a[i])){
                hm.put(a[i], hm.get(a[i])+1);
            }else{
                hm.put(a[i], 1);
            }
        }
        System.out.println(hm);
    }

}