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过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

相关推荐
小羊没烦恼!2 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
一隅论数智2 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
俊昭喜喜里2 天前
java中的继承和多态的区别
java
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
XiHongShi20162 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
譕痕2 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码2 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖2 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
爱吃苹果的日记本2 天前
离散数学第六课
学习·离散数学