Java统计单词个数

Java统计单词个数
import java.util.*;

import java.util.regex.*;

import java.io.*;

public class Test {

public static void main(String args[]) throws IOException {

BufferedReader buf = new BufferedReader(new FileReader("test.txt"));

System.out.println("通过读取 test.txt ");

StringBuffer sbuf = new StringBuffer();

String line = null;

while ((line = buf.readLine()) != null) {

sbuf.append(line);

}

buf.close();

Pattern expression = Pattern.compile("[a-zA-Z]+");

String string1 = sbuf.toString().toLowerCase();

Matcher matcher = expression.matcher(string1);

TreeMap myTreeMap = new TreeMap();

int n = 0;

Object word = null;

Object num = null;

while (matcher.find()) {

word = matcher.group();

n++;

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));

}

}

System.out.println("统计分析如下:");

System.out.println("文章中单词总数" + n + "个");

System.out.println("具体的信息在当前目录的result.txt文件中");

BufferedWriter bufw = new BufferedWriter(new FileWriter("result.txt"));

Iterator iter = myTreeMap.keySet().iterator();

Object key = null;

while (iter.hasNext()) {

key = iter.next();

bufw.write((String) key + ":" + myTreeMap.get(key));

bufw.newLine();

}

bufw.write("english.txt中单词的出现次数" + n + "个");

bufw.newLine();

bufw.write("english.txt中单词的个数" + myTreeMap.size() + "个");

bufw.close();

}

}

这是整个程序代码。
我想请问一下,统计出来的result.txt文档里单词
为什么会按照字母顺序排序
这一操作具体体现在上面代码的哪一部份?
TreeMap本身就是经过排序了的,如果你不想排序的话,可以换成HashMap
你用的是TreeMap,它是以二叉树来排的序。
← 上一篇: 下一篇: →