侧边栏壁纸
博主头像
疯狂IT人博主等级

疯狂编程博客,分享IT编程的技术博客,用程序员视角总结分享IT编程和互联网知识的那些事儿。

  • 累计撰写 188 篇文章
  • 累计创建 20 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

ChatGPT帮我编码:用java实现读取txt文件内容,并统计每个字符出现的次数,按照降序打印输出字符和次数

疯狂IT人
2022-12-08 / 0 评论 / 0 点赞 / 723 阅读 / 364 字 / 正在检测是否收录...

ChatGPT帮我编码:用java实现读取txt文件内容,并统计每个字符出现的次数,按照降序打印输出字符和次数
24
ChatGPT的完整答复如下:
你可以使用Java的FileReader和BufferedReader类来实现读取txt文件内容。下面是一个示例代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class TxtTest {
  public static void main(String[] args) {
    try {
      // 创建文件读取流
      FileReader fr = new FileReader("/path/to/file.txt");

      // 创建缓冲读取流
      BufferedReader br = new BufferedReader(fr);

      // 创建Map对象,用于统计每个字符出现的次数
      Map<Character, Integer> charMap = new HashMap<>();

      // 读取文件中的每一行内容
      String line;
      while ((line = br.readLine()) != null) {
        // 遍历每一行中的每个字符
        for (char c : line.toCharArray()) {
          // 判断Map中是否存在该字符,如果存在则次数+1,否则次数为1
          if (charMap.containsKey(c)) {
            charMap.put(c, charMap.get(c) + 1);
          } else {
            charMap.put(c, 1);
          }
        }
      }

      // 关闭读取流
      br.close();
      fr.close();

      // 将Map中的数据按照降序排列
      Map<Character, Integer> sortedCharMap = new TreeMap<>(
          (k1, k2) -> charMap.get(k2) - charMap.get(k1));
      sortedCharMap.putAll(charMap);

      // 打印输出字符和次数
      for (Map.Entry<Character, Integer> entry : sortedCharMap.entrySet()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

在上面的代码中,我们首先使用FileReader和BufferedReader类创建了文件读取流。然后,创建缓冲读取流。

0

评论区