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

相关推荐
testpassportcn4 分钟前
Dell D-MSS-DS-23 認證介紹|Dell Data Scientist 考試全解析與高效備考指南
网络·学习·改行学it
MarkHD13 分钟前
智能体在车联网中的应用:第52天 大语言模型作为高级规划器或世界模型:重塑自动驾驶的感知与决策
学习·安全
week_泽14 分钟前
第7课:管理长期记忆的关键架构决策 - 学习笔记_7
java·笔记·学习·ai agent
爱装代码的小瓶子18 分钟前
【c++进阶】c++11下类的新变化以及Lambda函数和封装器
java·开发语言·c++
乌萨奇也要立志学C++19 分钟前
【Linux】线程同步 条件变量精讲 + 生产者消费者模型完整实现
java·linux·运维
澄澈青空~19 分钟前
病毒木马侵入系统内核的底层运作机理
java·linux·服务器
FAFU_kyp24 分钟前
Rust 所有权(Ownership)学习
开发语言·学习·rust
2501_9423264428 分钟前
科学开发大脑潜能,提升学习效率
学习
lkbhua莱克瓦2434 分钟前
进阶-存储对象2-存储过程上
java·开发语言·数据库·sql·mysql
杨杨杨大侠38 分钟前
深入理解 LLVM:从编译器原理到 JIT 实战
java·jvm·编译器