打开一个文本文档,统计单词出现的次数
运行后的结果:
package experiment.six;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Set;
public class FileReadWrite {
public static void main(String[] args) throws IOException {
HashMap<String,Integer> m=new HashMap<>();//定义一个双列集合,键用来存单词,值用来存单词个数
BufferedReader reader=new BufferedReader(
new FileReader("E:\\eclipse-workspace\\review\\src\\experiment\\six\\article"));
//创建一个文件字节输出流来输出文件
String ss=null; //定义一个字符串,初始化null
while((ss=reader.readLine())!=null) {//文件一行一行的读,直到读到文件尾
String[] str=ss.trim().split("\\s+");//
for(int i=0;i<str.length;i++) {
//
String word=str[i].trim();
/*判断Map集合中是否存在指定的键对象key
* 如果存在,就把个数的个数加1,如果不存在,就把该值加入进去
*/
if(m.containsKey(word)) {
m.put(word, m.get(word)+1);
}else {
m.put(word,1);
}
}
}
reader.close();
Set<String> st=m.keySet();//以Set集合的形式返回Map集合中所以的键对象
System.out.println("-------------------------------------");
System.out.println("\t"+"Occurrences"+"\t"+"Word");
for(String k:st) { //foreash循环遍历
if(!k.equals(" ")){ //判断是否读到文件尾
char[] str=k.toCharArray();
System.out.print("\t"+"\t"+m.get(k.trim()));
System.out.print("\t");
for(int i=0;i<str.length;i++) {
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) {
System.out.print(str[i]);
}
}
System.out.println("");
}
}
System.out.println("-------------------------------------");
}
}