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,否则返回false
34             //第一次为所有的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,否则返回false
70             //先创建容器,之后为容器存放值
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,否则返回false
33             //第一次创建容器,并为容器中存放值
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,否则返回false
67             //第一次创建容器,并为容器中存放值
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 }

Java编程之Map中分拣思想。,布布扣,bubuko.com

时间: 2024-10-29 03:15:07

Java编程之Map中分拣思想。的相关文章

Swift函数编程之Map、Filter、Reduce

在Swift语言中使用Map.Filter.Reduce对Array.Dictionary等集合类型(collection type)进行操作可能对一部分人来说还不是那么的习惯.对于没有接触过函数式编程的开发者来说,对集合类型中的数据进行处理的时候第一反应可能就是采用for in遍历.本文将介绍一些Swift中可以采用的新方法. Map Map函数会遍历集合类型并对其中的每一个元素进行同一种的操作.Map的返回值是一个所得结果的数组.例如:我们要对一个数组里面的数据进行平方操作,常见的代码如下:

Java编程之Date的相关操作

一:讲字符串的时间格式数据转换成时间对象 1 //将字符串的时间数据,转换成时间 2 String dateString="2007-12-12"; 3 DateFormat date=new SimpleDateFormat("yyyy-MM-dd"); 4 Date dat=date.parse(dateString); Java编程之Date的相关操作

Java 编程之美:并发极速赛车平台出租编程高级篇

借用 Java 并发极速赛车平台出租haozbbs.comQ1446595067 编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了. 相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的. 并发编程相比 Java 中其他知识点学习起来门槛相对较高,学习起来比较费劲,从而导致很多人望而却步: 而无论是职场面试和高并发高流量的系统的实现却都还离不开并发编程,从而导致能够真正掌握并发编程的人才成为市场比较迫

java 线程之concurrent中的常用工具 CyclicBarrier

一.CyclicBarrier CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用.因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier. CyclicBarrier类似于CountDownLatch也是个计数器, 不同的是CyclicBarrier数的是调用了CyclicBa

java编程之:Unsafe类

Unsafe类在jdk 源码的多个类中用到,这个类的提供了一些绕开JVM的更底层功能,基于它的实现可以提高效率.但是,它是一把双刃剑:正如它的名字所预示的那样,它是 Unsafe的,它所分配的内存需要手动free(不被GC回收).Unsafe类,提供了JNI某些功能的简单替代:确保高效性的同时,使事情变得更简 单. 这篇文章主要是以下文章的整理.翻译. http://mishadoff.com/blog/java-magic-part-4-sun-dot-misc-dot-unsafe/ 1.

java编程之POI读取excel表格的内容

07版本的excel需要另外加一个jar包.xbean.jar的jar包 读取代码模板.利用模板介绍读取excel的一些poi的api这是重点 1 /** 2 * 读取excel文件 3 * @Title: readExcel 4 * @Description: TODO(这里用一句话描述这个方法的作用) 5 * @author 尚晓飞 6 * @date 2014-11-10 上午8:58:01 7 * @param readPath 读取电脑硬盘上某个excel的绝对路径 例如:C://20

java编程之:生成rsa密钥

通过openssl工具生成RSA的公钥和私钥(opnssl工具可在互联网中下载到,也可以点此下载无线接口包,里面包含此工具) 打开openssl文件夹下的bin文件夹,执行openssl.exe文件: 1)生成RSA私钥 输入“生成命令.txt”文件中:“genrsa -out rsa_private_key.pem 1024”,并回车得到生成成功的结果,如下图: 此时,我们可以在 bin文件夹中看到一个文件名为rsa_private_key.pem的文件,用记事本方式打开它,可以看到-----

java编程之:org.apache.commons.lang3.text.StrTokenizer

第一个api测试:按特殊符号进行分词,并遍历每一个分词部分 1 public static void main(String[] args) { 2 String aString="AB-CD-EF-GH-IJ-KL-MN-OP-QR-ST-UV-WX-YZ"; 3 StrTokenizer strTokenizer=new StrTokenizer(aString, "-"); 4 while(true){ 5 System.out.println("P

学 Java的第30天 Map中嵌套Map

package cn.aaa; import java.util.Iterator;import java.util.Map.Entry;import java.util.HashMap;import java.util.Set; //Map中嵌套存储Map//aaa//java班//  001 周一//  002 周二//hoodp班//  001 周三//  002 周四////java班 :存学号和名字//hoodp班:存学号和名字//aaa:存的是班级//  java班<学号,姓名>/