题目要求编写一个程序,从一个文本文件中读取若干行,将重复的单词存入一个 Set 对象中,不重复的单词存入另一个 Set 对象中。java代码
时间: 2024-11-25 19:18:57 浏览: 22
当然可以。在 Java 中,你可以通过以下步骤来完成这个任务:
首先,你需要导入必要的包,如 `java.io` 和 `java.util`,其中包含了文件操作和集合框架。
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
```
接下来,定义两个 `Set` 对象,一个用于存储重复的单词 (`HashSet`),因为 `Set` 的成员是唯一的,所以重复的单词会被自动过滤;另一个用于存储不重复的单词 (`LinkedHashSet`),它保持插入顺序,并且重复元素会被忽略。
```java
public static void main(String[] args) {
String inputFile = "your_file.txt"; // 替换为你要处理的文件名
Set<String> duplicates = new HashSet<>();
Set<String> uniqueWords = new LinkedHashSet<>();
try (BufferedReader reader = new BufferedReader(new FileReader(inputFile))) {
String line;
while ((line = reader.readLine()) != null) {
String[] words = line.split("\\s+"); // 分割每一行成单词数组,假设单词由空格隔开
for (String word : words) {
if (!duplicates.add(word)) { // 如果单词已经存在于duplicates set中,则不是新词
uniqueWords.remove(word); // 但是我们需要从uniqueWords set中移除,因为它包含重复项
} else {
uniqueWords.add(word); // 否则添加到uniqueWords set中
}
}
}
} catch (IOException e) {
System.out.println("Error reading file: " + e.getMessage());
}
// 打印结果
System.out.println("重复的单词: " + duplicates);
System.out.println("不重复的单词: " + uniqueWords);
}
```
在这个代码中,我们逐行读取文件,对每一行中的单词进行处理。如果单词已经在 `duplicates` 集合中,说明它是重复的,我们就从 `uniqueWords` 集合中移除它;反之,就将其添加到 `uniqueWords` 中。
阅读全文