程序员

HashMap经典储存 分拣思路

2016-10-30  本文已影响0人  VikingOldYoung

自定义类

public class Letter {
    private String name;
    private int count;
    
    public Letter(String name, int count) {
        super();
        this.name = name;
        this.count = count;
    }

    public Letter() {
        
    }
get set 方法就省略了,这个里面,只用到了count来存放字符出现的次数

思路一

public static void main(String[] args) {
        //放到字符串里面
        String string=new String("this is a cat and that is a mice and where is the food");
        //以空格区分,将string分开
        String[] strs=string.split(" ");
        
        //存储到map中
        Map<String, Letter> letters=new HashMap<String, Letter>();
        
        for(String temp:strs){
            //为每一个key创建一个容器,似乎把Letter当做存放的容器了
            if(!letters.containsKey(temp)){
                letters.put(temp, new Letter());
            }
        }
        for(String temp:strs){
            Letter col=letters.get(temp);//获取上面创建的容器,因为key是字符串,所以,每个字符串对应一个容器
            col.setCount(col.getCount()+1);//如果碰见一次一样的就加一
        }
        
        //输出map的值
        Set<String> keys=letters.keySet();
        for(String temp:keys){
            Letter col=letters.get(temp);
            Integer i=col.getCount();
            System.out.println("单词"+temp+"出现次数:"+i);
        }
    }
}

思路二

        Letter col=null;    //简化程序
        for(String temp:strs){
            //为每一个key创建一个容器,然后把value放进去
            if(null==(col=letters.get(temp))){//没有就建
                //Letter col=new Letter();
                col=new Letter();
                col.setCount(1);        //放进去,即数目加1
                letters.put(temp,col);
            }else{
                col.setCount(col.getCount()+1);     //放进去,即数目加1
            }
上一篇 下一篇

猜你喜欢

热点阅读