package lastclasstest;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
import org.junit.Test;
/*1.7.1获取文本上字符出现的次数并排序
获取一个文本上每个字符出现的次数并排序,将结果写在times.txt上。
TreeMap
TreeMap 默认排序规则:按照key的字典顺序来排序(升序)
当然,也可以自定义排序规则:要实现Comparator接口。*/
public class Test1 {
@Test
public void twst() throws IOException {
FileReader reader=new FileReader("t.txt");
FileWriter writer=new FileWriter("times.txt");
BufferedReader br=new BufferedReader(reader);
BufferedWriter bw=new BufferedWriter(writer);
int read=-1;
Map<Character, Integer> map=new HashMap<>();
while ((read=br.read())!=-1) {
char c=(char) read;
if(map.containsKey(c)==false) {
map.put(c, 1);
}
else {
map.put(c, map.get(c)+1);
}
}
if(br!=null) {
br.close();
}
List<Entry<Character, Integer>> list = new ArrayList<Entry<Character, Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>() {
@Override
public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
// TODO Auto-generated method stub
return o1.getValue() > o2.getValue() ? -1 : 1;
}
});
for(Entry<Character, Integer> s:list) {
writer.write(s.toString());
bw.newLine();
bw.flush();
}if(bw!=null) {
bw.close();
}
}
}
Java小程序之获取文本上字符出现的次数并排序
最新推荐文章于 2023-02-01 09:50:31 发布