我们用到的实例:
Question;Position
#Hello;World
Position;Java
代码:
public static void main(String args[]) throws IOException {
BufferedReader buf = new BufferedReader(new FileReader("test.txt"));
StringBuffer sbuf = new StringBuffer();// 缓冲字符串
String line = null;
while ((line = buf.readLine()) != null) {
sbuf.append(line + ",");// 追加到缓冲字符串中
System.out.println(sbuf);
}
buf.close();// 读取结束
Pattern expression = Pattern.compile("[a-zA-Z]+");// 定义正则表达式匹配单词
String string1 = sbuf.toString().toLowerCase();// 转换成小写
Matcher matcher = expression.matcher(string1);// 定义string1的匹配器
TreeMap myTreeMap = new TreeMap();// 创建树映射 存放键/值对
int n = 0;// 文章中单词总数
Object word = null;// 文章中的单词
Object num = null;// 出现的次数
while (matcher.find()) {// 是否匹配单词
word = matcher.group();// 得到一个单词-树映射的键
n++;// 单词数加1
if (myTreeMap.containsKey(word)) {// 如果包含该键,单词出现过
num = myTreeMap.get(word);// 得到单词出现的次数
Integer count = (Integer) num;// 强制转化
myTreeMap.put(word, new Integer(count.intValue() + 1));
} else {
myTreeMap.put(word, new Integer(1));// 否则单词第一次出现,添加到映射中
}
}
// treemap按照value 排序
List<Map.Entry<Integer, Integer>> list = new ArrayList<Map.Entry<Integer, Integer>>(myTreeMap.entrySet());
// 然后通过比较器来实现排序
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
// 降序排序
public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
System.out.println("统计分析具体的信息在当前目录的test1.txt文件中");
BufferedWriter bufw = new BufferedWriter(new FileWriter("test1.txt"));
Iterator iter = myTreeMap.keySet().iterator();// 得到树映射键集合的迭代器
Object key = null;
for (Entry<Integer, Integer> e : list) {
System.out.println(e.getKey() + "," + e.getValue());
key = iter.next();
bufw.write(e.getKey() + "," + e.getValue());// 键/值写到文件中
bufw.newLine();
}
bufw.close();
}