本文共 1883 字,大约阅读时间需要 6 分钟。
package Exer;import org.junit.Test;import java.io.*;import java.util.*;/** * @Author Lin * @CreateTime 2021/4/19 22:17 */public class Test111 { @Test public void test1() throws Exception { Date date1 = new Date(); // 创建读取和写入流 InputStreamReader fis = new InputStreamReader(new FileInputStream("D:\\229827570\\FileRecv\\MobileFile\\雪中.txt"), "UTF-8"); OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream("hello1.txt"), "UTF-8"); // 初始化变量 Mapmap = new HashMap<>(); char[] chars = new char[1024]; int len; // 读取文件内容并统计字符频率 while ((len = fis.read(chars)) != -1) { for (int i = 0; i < len; i++) { if (map.containsKey(chars[i])) { map.put(chars[i], map.get(chars[i]) + 1); } else { map.put(chars[i], 1); } } } // 转换为列表并排序 List > list = new ArrayList<>(map.entrySet()); list.sort(Comparator.comparing( Map.Entry::getValue, Comparator.reverseOrder() )); // 复制排序后的结果到新的映射中 Map map2 = new LinkedHashMap<>(); for (Map.Entry entry : list) { map2.put(entry.getKey(), entry.getValue()); } // 将排序后的结果写入新文件 Iterator > iter = map2.entrySet().iterator(); while (iter.hasNext()) { fos.write(iter.next().toString() + "\n"); } // 计算并输出耗时 Date date2 = new Date(); System.out.println("统计成功,耗时:" + (date2.getTime() - date1.getTime())); // 最后关闭流 fos.close(); }}
改写说明:
<div>
标签和不相关的字面元素,代码更清晰。转载地址:http://cmymz.baihongyu.com/