JAVA学习-练习试用Java实现“一个词频统计工具 :读取文本文件,统计并输出每个单词的频率”

问题:

java语言编辑,实现一个词频统计工具 :读取文本文件,统计并输出每个单词的频率。

解答思路:

以下是一个Java程序,该程序读取一个文本文件,统计并输出每个单词的频率。请注意,该程序假定单词由空格、换行符、标点符号等非字母数字字符分隔。

java 复制代码
import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

import java.util.StringTokenizer;


public class WordFrequencyCounter {


    public static void main(String[] args) {

        // 假设文件名为 "textfile.txt",您可以根据实际情况修改文件名

        String filename = "textfile.txt";

        Map<String, Integer> wordCountMap = countWordFrequency(filename);

        

        // 输出每个单词及其频率

        for (Map.Entry<String, Integer> entry : wordCountMap.entrySet()) {

            System.out.println(entry.getKey() + ": " + entry.getValue());

        }

    }


    private static Map<String, Integer> countWordFrequency(String filename) {

        Map<String, Integer> wordCountMap = new HashMap<>();

        try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {

            String line;

            while ((line = reader.readLine()) != null) {

                // 使用非字母数字字符分割单词

                String[] words = line.split("[^a-zA-Z0-9]+");

                for (String word : words) {

                    // 忽略空字符串

                    if (!word.isEmpty()) {

                        word = word.toLowerCase(); // 转换为小写以实现不区分大小写的统计

                        wordCountMap.put(word, wordCountMap.getOrDefault(word, 0) + 1);

                    }

                }

            }

        } catch (IOException e) {

            e.printStackTrace();

        }

        return wordCountMap;

    }

}

在这个程序中,'countWordFrequency' 方法负责读取指定文件名对应的文件,并统计单词频率。程序首先创建一个'HashMap'来存储单词和它们的频率。然后,它使用'BufferedReader'来逐行读取文件。对于每一行,它使用正则表达式'\^a-zA-Z0-9+'来分割单词,并统计每个单词出现的次数。

'main' 方法中指定了要读取的文件名(这里是 '"textfile.txt"'),并调用 'countWordFrequency' 方法。然后,程序遍历 'wordCountMap' 并打印每个单词及其频率。

为了运行这个程序,请确保有名为 "textfile.txt" 的文本文件在同一目录下,或者修改 'filename' 变量以指向正确的文件路径。然后,编译并运行该程序。

编译并运行命令如下:

bash 复制代码
javac WordFrequencyCounter.java

java WordFrequencyCounter

确保将 'WordFrequencyCounter.java' 替换为你保存上述代码的文件名。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

相关推荐
minglie14 小时前
高等代数试题
学习
黒亱中旳5 小时前
Java AI 框架三国杀:Solon AI vs Spring AI vs LangChain4j 深度对比
java·人工智能·spring
网络工程小王5 小时前
[智能对话系统架构设计文档]
java·系统架构·langraph
alxraves5 小时前
医用超声远程会诊系统:会诊平台的核心架构与功能解析
java·人工智能·架构
带刺的坐椅5 小时前
用 Solon AI ReActAgent 落地智能客服工单处理
java·ai·llm·agent·solon·react-agent
Xiaofeng36935 小时前
GPT-5.6 发布后,我用了一个周末重新规划学习路线图
gpt·学习
我是坏垠6 小时前
Crypto、Cipher与Password:Java加密开发的三个核心概念
java·开发语言·python
white_ant6 小时前
JDK LTS 版本升级迁移注意事项大全
java·开发语言
其实防守也摸鱼6 小时前
运维--怎么看接口的请求和返回
运维·学习·网络安全·网络攻击模型·burpsuite·攻防对抗·蓝队
酷讯网络_2408701607 小时前
区块粮仓宠物NFT源码区块狗/抢购转让预约区块投资理财系统
学习·开源·宠物