Java实现的一个词频统计程序

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. import java.util.HashMap;  
  2. import java.util.Iterator;  
  3.   
  4. public class WordCount {  
  5.     public static void main(String[] args) {  
  6.         String[] text=new String[]{"the weather is good ","today is good","today has good weather","good weather is good"};  
  7.         HashMap<String, Integer> hashMap=new HashMap<String, Integer>();  
  8.         for (int i=0;i<text.length;i++){  
  9.             String temp=text[i];  
  10.             String[] words=temp.split("\\s");  
  11.             for(int j=0;j<words.length;j++){  
  12.                 if(!hashMap.containsKey(words[j])){  
  13.                     hashMap.put(words[j], new Integer(1));  
  14.                 }else{  
  15.                     int k=hashMap.get(words[j]).intValue()+1;  
  16.                     hashMap.put(words[j], new Integer(k));  
  17.                 }  
  18.             }  
  19.         }  
  20.         Iterator iterator=hashMap.keySet().iterator();  
  21.         while(iterator.hasNext()){  
  22.             String word=(String) iterator.next();  
  23.             System.out.println(word+":"+hashMap.get(word));  
  24.         }  
  25.     }  
  26. }  
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. 改进版:  
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <pre name="code" class="java">package jdbcExc;  
  2. import java.io.BufferedReader;  
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileReader;  
  5. import java.io.IOException;  
  6. import java.util.HashMap;  
  7. import java.util.Iterator;  
  8. import java.util.StringTokenizer;  
  9.   
  10. public class WordCount1 {  
  11.     public static void main(String[] args) {  
  12.         //用HashMap存放<单词:词频>这样一个映射关系  
  13.         HashMap<String, Integer> hashMap=new HashMap<String, Integer>();  
  14.         //用正则表达式来过滤字符串中的所有标点符号  
  15.         String regex = "[【】、.。,\"!--;:?\'\\]]";   
  16.         try {  
  17.             //读取要处理的文件  
  18.             BufferedReader br=new BufferedReader(new FileReader("F:\\file80.txt"));  
  19.             String value;  
  20.             while((value=br.readLine())!=null){  
  21.                 value=value.replaceAll(regex, " ");  
  22.                 //使用StringTokenizer来分词(StringTokenizer详见JDK文档)  
  23.                 StringTokenizer tokenizer = new StringTokenizer(value);  
  24.                 while(tokenizer.hasMoreTokens()){  
  25.                     String word=tokenizer.nextToken();  
  26.                     if(!hashMap.containsKey(word)){    
  27.                         hashMap.put(word, new Integer(1));    
  28.                     }else{    
  29.                         int k=hashMap.get(word).intValue()+1;    
  30.                         hashMap.put(word, new Integer(k));    
  31.                     }    
  32.                 }  
  33.             }  
  34.             //遍历HashMap,输出结果  
  35.             Iterator iterator=hashMap.keySet().iterator();    
  36.             while(iterator.hasNext()){    
  37.                 String word=(String) iterator.next();    
  38.                 System.out.println(word+":\t"+hashMap.get(word));    
  39.             }    
  40.         } catch (FileNotFoundException e) {  
  41.             e.printStackTrace();  
  42.         } catch (IOException e) {  
  43.             e.printStackTrace();  
  44.         }  
  45.     }  
  46. }  
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值