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

相关推荐
_Kayo_2 小时前
VUE2 学习笔记14 nextTick、过渡与动画
javascript·笔记·学习
_oP_i3 小时前
RabbitMQ 队列配置设置 RabbitMQ 消息监听器的并发消费者数量java
java·rabbitmq·java-rabbitmq
Monkey-旭3 小时前
Android Bitmap 完全指南:从基础到高级优化
android·java·人工智能·计算机视觉·kotlin·位图·bitmap
我爱996!3 小时前
SpringMVC——响应
java·服务器·前端
小宋10213 小时前
多线程向设备发送数据
java·spring·多线程
哪 吒4 小时前
OpenAI放大招:ChatGPT学习模式上线,免费AI智能家教
人工智能·学习·ai·chatgpt·gemini·deepseek
大佐不会说日语~4 小时前
Redis高频问题全解析
java·数据库·redis
寒水馨4 小时前
Java 17 新特性解析与代码示例
java·开发语言·jdk17·新特性·java17
启山智软4 小时前
选用Java开发商城的优势
java·开发语言
鹦鹉0074 小时前
SpringMVC的基本使用
java·spring·html·jsp