编写一个java程序,读取文本文件,统计其中每个单词出现的次数,按照词频从高到低输出
时间: 2024-09-10 13:27:54 浏览: 93
要编写一个Java程序来读取文本文件并统计每个单词出现的次数,按照词频从高到低输出,可以按照以下步骤进行:
1. 使用`FileReader`和`BufferedReader`来读取文本文件。
2. 读取文件中的文本,使用`StringTokenizer`或`split`方法来分割单词。
3. 使用`HashMap`来存储每个单词及其出现的次数。
4. 遍历`HashMap`,将键值对转移到一个列表中,以便进行排序。
5. 使用`Collections.sort`对列表进行排序,排序依据是单词出现的次数。
6. 按照排序后的顺序输出单词及其出现的次数。
下面是一个简化的代码示例:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class WordFrequencyCounter {
public static void main(String[] args) {
String filePath = "path/to/your/textfile.txt"; // 替换为你的文件路径
HashMap<String, Integer> wordCountMap = new HashMap<>();
ArrayList<Map.Entry<String, Integer>> wordList = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String word;
while ((word = br.readLine()) != null) {
word = word.toLowerCase(); // 将单词转换为小写
wordCountMap.put(word, wordCountMap.getOrDefault(word, 0) + 1);
}
} catch (IOException e) {
e.printStackTrace();
}
for (HashMap.Entry<String, Integer> entry : wordCountMap.entrySet()) {
wordList.add(entry);
}
Collections.sort(wordList, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
for (Map.Entry<String, Integer> entry : wordList) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
```
这个程序首先读取文件,然后统计每个单词的出现次数,并按照出现次数降序排序输出。
阅读全文