hashmap的用法问题,请给出实现

问:String a="A B C D A C",要求输出不重复的字母出现的次数,比如:A 2次,B 1次,C 2次,D 1次。用hashmap实现

结果格式有点不对自己改下

 public final static void main(String[] arg){
        String s="A B C D A C";
        String[] arr=s.split(" ");
        HashMap<String, Integer> map=new HashMap<String,Integer>();
        for (int i = 0; i < arr.length; i++) {
            if(map.containsKey(arr[i])){
                map.put(arr[i], map.get(arr[i])+1);
            }else
                map.put(arr[i], 1);
        }
        System.out.println(map.toString());
    }
 String[] data = a.split(" ");
HashMap<String, int> hm = new HashMap<String, int>();
for (int i = 0; i < data.size; i++)
{
    if (!hm.containsKey(data[i]))
            hm.Add(data[i], 1);
        else
            hm[data[i]]++;
}

手写的,大概这个思路,函数调用不一定对,自己修改下

hashmap每个记录带一个key,一个value,
读入一个字母,将字母设成key,在hashmap中查找,
已经存在的话,将value加1,
不存在,将value设成1,加入hashmap。

 public static Map<Character,Integer> countFreLetter(String a){
        Map<Character,Integer> map = new HashMap<Character,Integer>(); 
        for(int i = 0; i < a.length(); i ++){
            char c = a.charAt(i);
            if(Character.isLetter(c)){
                if(map.containsKey(c)){
                    map.put(c,map.get(c) + 1);  
                }else{
                    map.put(c,1);
                }
            }
        }
        return map;
    } 

循环判断,基本的实现方式是这样,但感觉应该有更优化的方法