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

相关推荐
luckywuxn12 分钟前
EurekaServer 工作原理
java·eureka
壹米饭15 分钟前
Java程序员学Python学习笔记一:学习python的动机与思考
java·后端·python
java金融17 分钟前
Java 锁升级机制详解
java
Young556621 分钟前
还不了解工作流吗(基础篇)?
java·workflow·工作流引擎
让我上个超影吧22 分钟前
黑马点评【缓存】
java·redis·缓存
ajassi200030 分钟前
开源 java android app 开发(十一)调试、发布
android·java·linux·开源
爱意随风起风止意难平44 分钟前
如何用AI赋能学习
人工智能·学习·aigc
YuTaoShao44 分钟前
Java八股文——MySQL「存储引擎篇」
java·开发语言·mysql
crud1 小时前
Java 中的 synchronized 与 Lock:深度对比、使用场景及高级用法
java
王德博客1 小时前
【Java课堂笔记】Java 入门基础语法与面向对象三大特性详解
java·开发语言