- 读取一个指定的文本文件。
- 将文件中的所有单词读取出来,并忽略大小写。
- 统计每个单词出现的次数。
- 将结果以降序排列(按出现次数从高到低),并输出前5个最常见的单词及其出现次数。
- 使用
HashMap<String, Integer>
来存储单词和它们的出现次数。 - 使用
BufferedReader
来读取文件内容。 - 使用
Collections.sort()
对单词频率进行排序。
HashMap<String, Integer>
来存储单词和它们的出现次数。BufferedReader
来读取文件内容。Collections.sort()
对单词频率进行排序。回答引用自GPT-4o,由博主小ᶻZ࿆编写,若还有疑问可评论或留言:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
public class WordFrequencyCounter {
public static void main(String[] args) {
// 定义文件路径
String filePath = "yourfile.txt"; // 请替换为实际文件路径
// 使用 HashMap 来存储单词和它们的出现次数
HashMap<String, Integer> wordCountMap = new HashMap<>();
// 使用 BufferedReader 来读取文件内容
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = br.readLine()) != null) {
// 按照空格或标点符号来分割单词,并忽略大小写
String[] words = line.toLowerCase().split("\\W+");
for (String word : words) {
if (!word.isEmpty()) {
wordCountMap.put(word, wordCountMap.getOrDefault(word, 0) + 1);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
// 将结果按出现次数排序
List<Map.Entry<String, Integer>> sortedList = new ArrayList<>(wordCountMap.entrySet());
Collections.sort(sortedList, (a, b) -> b.getValue() - a.getValue());
// 输出前5个最常见的单词及其出现次数
System.out.println("Top 5 most frequent words:");
for (int i = 0; i < Math.min(5, sortedList.size()); i++) {
System.out.println(sortedList.get(i).getKey() + ": " + sortedList.get(i).getValue());
}
}
}