写很多行单词,用BufferedReader读取并再用TreeSet将每个单词排序再用BufferedWriter写并放入文档中
时间: 2023-11-22 14:55:41 浏览: 48
好的,以下是一个简单的示例代码:
```java
import java.io.*;
import java.util.*;
public class WordSorter {
public static void main(String[] args) {
String inputFile = "input.txt";
String outputFile = "output.txt";
try {
// 读取文件
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
String line;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
reader.close();
// 提取单词
String[] words = sb.toString().split("[^a-zA-Z]+");
// 排序并去重
TreeSet<String> sortedWords = new TreeSet<>(Arrays.asList(words));
// 写入文件
BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile));
for (String word : sortedWords) {
writer.write(word + "\n");
}
writer.close();
System.out.println("单词排序完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
需要注意的几点:
1. 在读取文件时,我们使用了 `StringBuilder` 来拼接每一行的内容,最后再一次性转换成字符串。这是因为反复使用 `+` 运算符来拼接字符串会浪费很多空间和时间。
2. 提取单词时,我们使用了正则表达式 `[^a-zA-Z]+` 来匹配所有非字母字符,然后将其作为分隔符来拆分字符串。这样可以保证提取到的都是单词。
3. 在写入文件时,我们使用了 `BufferedWriter` 来提高写入效率,并且每写入一个单词就加上一个换行符,以便于阅读。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)