您的位置:首页 > 编程语言 > Java开发

Java字符统计并排序

2011-03-29 08:43 615 查看
 

Java字符统计

Luo Weifeng 2011-3-28
字符统计可能是大多数人入门编程语言的时候都会遇到的一个题目。可是并不一定每个人都实现的那么完美。昨天帮MM调她的程序,感觉到混乱不堪,就自己写了一个字符统计的东西,因为我一贯的原则是“将神的恩赐发挥到极致”,一直认为把复杂的东西做简单,把简单的问题做完美。呵呵,废话不说,贴代码如下,以殇读者:
package test;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Hashtable;
import java.util.List;
/**
* 对一个保存英文文章的文本文档进行统计,最后给出每个英文字符的出现次数,按降幂排列
*/
public class SortedCharactersCounter {
static final Hashtable<String, Integer> h = new Hashtable<String, Integer>();
public static void main(String args[]) {
try {
FileInputStream fis = new FileInputStream("str.txt");
InputStreamReader dis = new InputStreamReader(fis);
BufferedReader reader = new BufferedReader(dis);
String s = null;
//统计字母
while ((s = reader.readLine()) != null) {
for (int i = 0; i < s.length(); i++) {
int temp = 0;
if (h.containsKey(String.valueOf(s.charAt(i))))
temp = h.get(String.valueOf(s.charAt(i))) + 1;
else
temp = 1;
h.remove(String.valueOf(s.charAt(i)));
h.put(String.valueOf(s.charAt(i)), temp);
}
}
dis.close();
//排序
List<String> sortedKeys = new ArrayList<String>(h.keySet());
Collections.sort(sortedKeys, new Comparator<Object>() {
public int compare(Object arg0, Object arg1) {
return h.get(arg1) - (h.get(arg0));
}
});

// 输出
for (String str : sortedKeys)
System.out.println("'" + str + "':" + h.get(str));
} catch (IOException e) {
}
}
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息