用java实现 统计一个文本文件中单词的个数
时间: 2023-11-12 14:07:37 浏览: 140
可以使用Java中的File、Scanner和Map来实现统计一个文本文件中单词的个数。具体实现步骤如下:
1. 创建一个File对象,指定文本文件的路径;
2. 创建一个Scanner对象,读取文本文件中的内容;
3. 使用正则表达式将文本文件中的单词分离出来;
4. 使用Map统计每个单词的出现次数;
5. 遍历Map,输出每个单词及其出现次数。
示例代码如下:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class WordCount {
public static void main(String[] args) {
File file = new File("test.txt");
Map<String, Integer> wordCount = new HashMap<>();
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] words = line.split("\\W+"); // 使用正则表达式分离单词
for (String word : words) {
if (!word.isEmpty()) { // 忽略空单词
wordCount.put(word, wordCount.getOrDefault(word, 0) + 1); // 统计单词出现次数
}
}
}
scanner.close();
for (Map.Entry<String, Integer> entry : wordCount.entrySet()) { // 遍历Map输出结果
System.out.println(entry.getKey() + ": " + entry.getValue());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
```
其中,使用正则表达式`"\\W+"`来分离单词,`\W`表示非单词字符,`+`表示匹配一次或多次。`wordCount.getOrDefault(word, 0)`表示获取Map中key为word的值,如果不存在则返回默认值0。`wordCount.put(word, wordCount.getOrDefault(word, 0) + 1)`表示将单词word的出现次数加1并存入Map中。
阅读全文