使用IO流读取文本并统计单词个数

package cn.itsource.Homework_01;
/*
* 使用它IO流相关知识,读取一共文本文件,统计出其中每一个单词出现的次数,
* 并把结果保存在另外的一个文件中,保存的结果类似如下:(此处假定单词可以是一个或者多个字母组成,不包含数字和_)
Hello-10
java-5
io-3
*
* */

import java.io.;
import java.util.
;
public class Test3 {
static ArrayList wordList = new ArrayList();
public static void main(String[] args)throws FileNotFoundException{
//读入"word.txt"内容并存进字符串中
Scanner input = new Scanner(new File(“f:/xx/word.txt”));
String s = input.nextLine();
//分割字符串并存进字符串数组中
String [] strArr = s.split(" “);
HashMap<String,Integer> hashMap = new HashMap<String,Integer>();
//遍历字符串数组
for(String word:strArr){
//求出不同单词个数
if(!wordList.contains(word.toLowerCase())){
wordList.add(word.toLowerCase());
}
//求出每一个单词出现的个数
Integer currentCount = hashMap.get(word);
if(currentCount == null){
currentCount = 0;
}
hashMap.put(word,++currentCount);
}
System.out.println(“不同单词个数为:” + wordList.size());
//创建新文件"newDemo2.txt"并将"排序单词出现次数"等内容存进新文件中
try{
FileOutputStream fos = new FileOutputStream(“f:/xx/newword.txt”,false);
fos.write(sort(hashMap).getBytes());
fos.close();//关闭文件流
}catch(IOException ex){
System.out.println(“无法打开文件!”);
}
}
//将"hashMap"中的“value”值进行排序
public static String sort(Map<String,Integer> hashMap){
String str = “不同单词个数为:” + wordList.size() + “\r\n”;
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(hashMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
if (o1.getValue() < o2.getValue())
return -1;
else if (o1.getValue() > o2.getValue())
return 1;
return 0;
}
});
//打印信息
for (int i = 0; i < list.size(); i++) {
java.util.Map.Entry<String, Integer> id = list.get(i);
str += “单词:” + id.getKey() + " 出现次数:” + id.getValue() + “\r\n”;
}
return str;
}
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值