词频统计系统:通过输入输出流读取文本数据,利用集合框架实现对文本中词语出现频率的统计,并输出出现频率最高的前 n 个词语。
时间: 2024-03-12 08:48:52 浏览: 73
好的,这是一个Java程序,可以通过输入输出流读取文本数据,利用集合框架实现对文本中词语出现频率的统计,并输出出现频率最高的前 n 个词语。
```java
import java.io.*;
import java.util.*;
public class WordFrequency {
public static void main(String[] args) throws IOException {
// 读取文本数据
BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
// 使用HashMap统计词频
Map<String, Integer> wordFreq = new HashMap<>();
String line;
while ((line = reader.readLine()) != null) {
String[] words = line.toLowerCase().split("\\s+");
for (String word : words) {
if (wordFreq.containsKey(word)) {
wordFreq.put(word, wordFreq.get(word) + 1);
} else {
wordFreq.put(word, 1);
}
}
}
reader.close();
// 输出出现频率最高的前n个词语
int n = 10; // 前n个
PriorityQueue<Map.Entry<String, Integer>> maxHeap = new PriorityQueue<>((a, b) -> b.getValue() - a.getValue());
maxHeap.addAll(wordFreq.entrySet());
System.out.println("出现频率最高的前" + n + "个词语:");
for (int i = 0; i < n; i++) {
Map.Entry<String, Integer> entry = maxHeap.poll();
System.out.println(entry.getKey() + " 出现次数:" + entry.getValue());
}
}
}
```
这个程序首先使用`BufferedReader`读取文本数据,然后将文本按行读取,并将每一行转换为小写并按空格分割为单词数组。接着使用`HashMap`统计每个单词的词频。最后,使用`PriorityQueue`维护出现频率最高的前n个词语,并输出它们的词频。
阅读全文