首页 > 代码库 > Java编程之Map中分拣思想。

Java编程之Map中分拣思想。

题目:给定一个字符串,求出字符串中每一个单词在字符串中出现的次数

旨意:map的分拣思想。

 

每一个key的包装类,存放出现的次数

 1 /** 2  * 作为包装类,用来存放英文单词,和该英文单词出现的次数 3 * @ClassName: Str  4 * @Description: TODO(这里用一句话描述这个类的作用)  5 * @author 尚晓飞 6 * @date 2014-7-30 下午6:57:29  7 * 8  */ 9 public class Str {10     private String st;11     private int count;12     public Str() {13         super();14     }15     public String getSt() {16         return st;17     }18     public void setSt(String st) {19         this.st = st;20     }21     public int getCount() {22         return count;23     }24     public void setCount(int count) {25         this.count = count;26     }27 28     29 }
View Code

第一种分拣思想:(1)先为key创建对应的容器(2)使用容器,存放key对应的值

 

 1 /** 2  * 字符串:this is a cat and that is a nice and where is the food 3  * 将该字符串的每个单词出现的次数统计出来 4  * 【分拣的思想】 5  *  第一种:为所有key创建容器 6  *        之后存放对应的value 7  *  第二种:第一次创建容器,并存放value 8  *       第二次之后,直接使用容器存放value 9 * @ClassName: TestMap 10 * @Description: TODO(这里用一句话描述这个类的作用) 11 * @author 尚晓飞12 * @date 2014-7-30 下午6:58:16 13 *14  */15 public class TestMap {16     17     public static void main(String[] args) {18         test4();19         20     }21     22     //第一种分拣思路 (1)先为所有的key创建对应的容器(2)为对应key的容器中存放值23     public static void test1(){24         String sts="this is a cat and that is a nice and where is the food";25         //将字符串分割成一个个单词,并存放入数组中26         String[] strings=sts.split(" ");27         //创建一个map对象,用来存放单词和单词出现的次数28         Map<String, Str> countMap=new HashMap<String, Str>();29         //第一种分拣思想30         //第一步:为所有的key创建容器,31         for(int i=0;i<strings.length;i++){32             String temp=strings[i];33             //判断map是否含有此key,如果有返回true,否则返回false34             //第一次为所有的key创建容器35             if(!countMap.containsKey(temp)){36                 Str str=new Str();37                 countMap.put(temp, str);38             }39         }40         41         //第二步:使用容器,存放值42         for(String temp:strings){43             Str clsStr=countMap.get(temp);44             clsStr.setCount(clsStr.getCount()+1);45             clsStr.setSt(temp);46         }47         48         49         //测试countMap是否算是成功达到目的50         Set<String> keys=countMap.keySet();51         for (String key:keys) {52             Str sd=countMap.get(key);53             Integer cInteger=sd.getCount();54             System.out.println("字母:"+key+"--次数:"+cInteger);55         }56         57     }58     //第一种分拣思路 (1)先为所有的key创建对应的容器(2)为对应key的容器中存放值59     public static void test2(){60         String sts="this is a cat and that is a nice and where is the food";61         //将字符串分割成一个个单词,并存放入数组中62         String[] strings=sts.split(" ");63         //创建一个map对象,用来存放单词和单词出现的次数64         Map<String, Str> countMap=new HashMap<String, Str>();65         //第一种分拣思想66         //第一步:为key创建容器的同时,并存放值67         for(int i=0;i<strings.length;i++){68             String temp=strings[i];69             //判断map是否含有此key,如果有返回true,否则返回false70             //先创建容器,之后为容器存放值71             if(!countMap.containsKey(temp)){72                 Str str=new Str();73                 countMap.put(temp, str);74             }75                 //使用容器存放值76                 Str str=countMap.get(temp);77                 str.setCount(str.getCount()+1);78             79         }80         81         //测试countMap是否算是成功达到目的82                 Set<String> keys=countMap.keySet();83                 for (String key:keys) {84                     Str sd=countMap.get(key);85                     Integer cInteger=sd.getCount();86                     System.out.println("字母:"+key+"--次数:"+cInteger);87                 }88     }89 90 }
View Code

 

第二种分拣思想:(1)第一次为key创建容器,并存key对应的值(2)第二次使用创建好的容器,存放key对应的值

 

 1  * 【分拣的思想】 2  *  第一种:为所有key创建容器 3  *        之后存放对应的value 4  *  第二种:第一次创建容器,并存放value 5  *       第二次之后,直接使用容器存放value 6 * @ClassName: TestMap  7 * @Description: TODO(这里用一句话描述这个类的作用)  8 * @author 尚晓飞 9 * @date 2014-7-30 下午6:58:16 10 *11  */12 public class TestMap {13     14     public static void main(String[] args) {15         test4();16         17     }18     19     20     21     //分拣第二种思想 (1)第一次为key创建容器,并存放值(2)第二次使用容器存放值22     public static void test3(){23         String sts="this is a cat and that is a nice and where is the food";24         //将字符串分割成一个个单词,并存放入数组中25         String[] strings=sts.split(" ");26         //创建一个map对象,用来存放单词和单词出现的次数27         Map<String, Str> countMap=new HashMap<String, Str>();28         //第一种分拣思想29         //第一步:为key创建容器的同时,并存放值30         for(int i=0;i<strings.length;i++){31             String temp=strings[i];32             //判断map是否含有此key,如果有返回true,否则返回false33             //第一次创建容器,并为容器中存放值34             if(!countMap.containsKey(temp)){35                 Str str=new Str();36                 str.setCount(1);37                 countMap.put(temp, str);38             }else{39                 //第二次使用容器存放值40                 Str str=countMap.get(temp);41                 str.setCount(str.getCount()+1);42             }43         }44         45         //测试countMap是否算是成功达到目的46                 Set<String> keys=countMap.keySet();47                 for (String key:keys) {48                     Str sd=countMap.get(key);49                     Integer cInteger=sd.getCount();50                     System.out.println("字母:"+key+"--次数:"+cInteger);51                 }52     }53     54     55     //第二种分拣思路:(1)第一次为key创建容器,并存放值(2)第二次使用容器存放值56     public static void test4(){57         String sts="this is a cat and that is a nice and where is the food";58         //将字符串分割成一个个单词,并存放入数组中59         String[] strings=sts.split(" ");60         //创建一个map对象,用来存放单词和单词出现的次数61         Map<String, Str> countMap=new HashMap<String, Str>();62         //第一种分拣思想63         //第一步:为key创建容器的同时,并存放值64         for(int i=0;i<strings.length;i++){65             String temp=strings[i];66             //判断map是否含有此key,如果有返回true,否则返回false67             //第一次创建容器,并为容器中存放值68             Str str=null;69             if(null==(str=countMap.get(temp))){70                  str=new Str();71                 str.setCount(1);72                 countMap.put(temp, str);73             }else{74                 //第二次使用容器存放值75                  str=countMap.get(temp);76                 str.setCount(str.getCount()+1);77             }78         }79         80         //测试countMap是否算是成功达到目的81                 Set<String> keys=countMap.keySet();82                 for (String key:keys) {83                     Str sd=countMap.get(key);84                     Integer cInteger=sd.getCount();85                     System.out.println("字母:"+key+"--次数:"+cInteger);86                 }87     }88 }
View Code