第三次作业

(1). 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。 附加要求:读入一段文本文件,统计该文本文件中单词的频率。

(2). 性能分析:

询问了同学以及上网查询了些资料。

package rjgc;

import java.util.*;
import java.util.Map.Entry;
public class Ged {

    public static void main(String[] args) 
    {
        String a="Word is case insensitive, i.e. “file”,"
                + " “FILE” and “File” are considered the same word.";
        a=a.toLowerCase();//把字符串全变小写。
        a=a.replaceAll("[\\pP‘'“”]", "");//去掉字符串中标点符号。
        StringTokenizer b=new StringTokenizer(a);//字符串分解成可被独立使用的单词
        Map<String, Integer> map= new HashMap<String, Integer>();//利用HAashMap键不允许重复来计数每个单词个数。
        while (b.hasMoreTokens()) {
            String letter = b.nextToken();
            int count;
            if (map.containsKey(letter)) {                       
                count=map.get(letter);
                //如果已有这个单词则设置它的数量加1
                map.put(letter, count + 1);                      
            } else {
                //如果没有这个单词则新填入数量为1
                map.put(letter, 1);
            }                                             
        }
        
        sort(map);
    }
    public static void sort(Map<String, Integer> map) {
        List<Map.Entry<String, Integer>> infoIds =
        new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); 
        for ( int i = 0; i < infoIds.size(); i++) {
            Entry<String, Integer> id = infoIds.get(i);
            //字符大于等于4输出
            if (id.getKey().length()>=4) {                     
             System.out.println(id.getKey() + ":" + id.getValue());
            }
            }
        }
}

 

测试结果

file:3
word:2
case:1
same:1
considered:1
insensitive:1

posted @ 2016-03-15 21:31  咗手写暧  阅读(189)  评论(0编辑  收藏  举报