首页 > 代码库 > 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 }
第一种分拣思想:(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 }
第二种分拣思想:(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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。