
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,它是以二叉树来排的序。