posts - 161, comments - 175, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2008年7月30日

代码编辑耗时 40 分钟 ;自己感觉很慢!!

文本文件,我想写个Java程序,读一遍这个
文件,然后打印出来文件中英文字母(a 到 z)出现的次数。不区分大小写。
代码:

import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;

public class LinjiawangMain {
    
    
public static void main(String[] args) throws Exception {
        Map
<Character, Integer> map = getCountByFileLetters("chars.txt") ;
        
for(char ctmp : map.keySet()){
            System.out.println( ctmp
+"="+map.get(ctmp) );
        }
    }
    
    
    
//统计 文件字符工具方法
    public static Map<Character, Integer> getCountByFileLetters(String filePath) throws Exception{
        
//逻辑 参数定义
        int int_A = 'A';
        
int int_Z = 'Z';
        
        
int int_a = 'a';
        
int int_z = 'z';
        
        
//数据收集 map (保持存储顺序 使用 LinkedHashMap )
        Map<Character, Integer> map = new LinkedHashMap<Character, Integer>();
        
        
//以 ISO-8859-1 字符 读取 .classpath 下的 文件 
        InputStreamReader read = new InputStreamReader(new FileInputStream(
                LinjiawangMain.
class.getClassLoader().getResource(filePath)
                        .getPath()), 
"ISO-8859-1");
        
//临时数据收集
        int[] iis = new int[int_z-int_a];
        
while(read.ready() ){
            
int itmp = read.read();
            
// 当 'a'<=itmp<='z' (短路)
            
// 当 'A'<=itmp<='Z' (非短路) 后修改itmp到 'a' 到 'z'范围 
            if
                ( itmp 
>=int_a && itmp<=int_z ) ||
                ( itmp
>=int_A && itmp<=int_Z  ) | (itmp=(itmp+(int_a-int_A)))>=int_a 
            ){
                iis[itmp
-int_a]++ ;
            }
        }
        
        
//由 临时数据收集 转 到正式收集 
        for(int i=0;i<int_z-int_a;i++){
            map.put( (
char)(i+int_a),iis[i] );
        }
        
//非修改 map 
        return Collections.unmodifiableMap(map) ;
    }
    
}



文件:
aAbbbbCCCCc2345ABdb
abc
d



posted @ 2008-07-30 11:29 G_G 阅读(1281) | 评论 (2)编辑 收藏