黑马程序员技术交流社区
标题:
刚做的一个测试题,我正则用的不太好,所以用集合做的
[打印本页]
作者:
dreamwork
时间:
2016-4-18 14:44
标题:
刚做的一个测试题,我正则用的不太好,所以用集合做的
package cn.lianxi;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Set;
import java.util.TreeMap;
/*6、统计一个文本文件中字符出现的次数,结果存入另外的一个文本文件中。例如:
a : 21 次
b : 15 次
c : 15 次
d : 7 次
e : 9 次
f : 3 次
g : 30 次*/
public class Text7 {
public static void main(String[] args) throws IOException {
// 读文本
BufferedReader bur = new BufferedReader(new FileReader("g:\\a.txt"));
String s ="";
String line=null;
while((line=bur.readLine())!=null){
// 把读的数据给s
s=line;
}
// 把字符串转成字符数组
char [] ch=s.toCharArray();
// 创建一个treemap集合
TreeMap<Character, Integer> tm=new TreeMap<Character, Integer>();
// 遍历把数组元素添加到集合
for(char c: ch){
Integer i = tm.get(c);
// 利用treemap集合,统计元素个数
if(tm.get(c)==null){
tm.put(c, 1);
}else{
i++;
tm.put(c, i);
}
}
// 创建可变字符串缓冲区
StringBuilder sb =new StringBuilder();
// 写数据
BufferedWriter buw = new BufferedWriter(new FileWriter("g:\\b.txt"));
// 遍历集合
Set<Character> set=tm.keySet();
for(Character key : set){
Integer value=tm.get(key);
// 把键值对按要求拼接添加到sb
sb=sb.append(key).append(": ").append(value).append("次");
s=sb.toString();
// 写
buw.write(s);
// 写一个删一个
sb=sb.delete(0, sb.length());
buw.newLine();
}
bur.close();
buw.close();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2