java问题,Map接口问题

用Map接口实现字符串中字符出现的次数,如"aabbcddha",求里面每个字母出现的次数

String str = "aabbcddha";
    char[] ch = str.toCharArray();
    HashMap<Character,Integer> hm = new HashMap<>();
    for (char c : ch) {
        if( ! hm.containsKey(c) ){
            hm.put(c, 1);
        }else{
            hm.put( c , hm.get(c) + 1 );
        }
    }

    for (Character key : hm.keySet()) {
        System.out.println(key + ":" + hm.get(key));
    }