编写java程序,从一文本文件中读若干行,实现将重复的单词存入一个 Set 对象中,将不重 复的单词存人另一个 Set 对象中。
时间: 2023-09-12 08:04:54 浏览: 161
简单的用java实现读/写文本文件的示例
### 回答1:
下面是一个示例程序,帮助你实现这个需求:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
// 定义存储重复单词的 Set 对象
Set<String> repeatedWords = new HashSet<>();
// 定义存储不重复单词的 Set 对象
Set<String> uniqueWords = new HashSet<>();
try (BufferedReader reader = new BufferedReader(new FileReader("words.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
// 将读取的行分割成单词
String[] words = line.split("\\s+");
// 遍历单词数组
for (String word : words) {
if (uniqueWords.contains(word)) {
// 如果这个单词在 uniqueWords 中出现过,说明这个单词是重复的
// 将这个单词从 uniqueWords 中移除,并添加到 repeatedWords 中
uniqueWords.remove(word);
repeatedWords.add(word);
} else if (!repeatedWords.contains(word)) {
// 如果这个单词不在 repeatedWords 中,说明这个单词是第一次出现
// 将这个单词添加到 uniqueWords 中
uniqueWords.add(word);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
// 打印出结果
System.out.println("重复的单词有:" + repeatedWords);
System.out.println("不重复的单词有:" + uniqueWords);
}
}
```
这段代码实现了从文件中读取若干行,然后将重复的单词存入一个 Set 对象(repeatedWords)中,将不重复的单词存入另一个 Set 对象(uniqueWords)中。
使
### 回答2:
可以使用Java中的File、Scanner和Set类来实现该功能。具体实现步骤如下:
1. 通过File类创建一个指向文本文件的引用。
2. 使用Scanner类读取文本文件的内容。
3. 创建两个Set对象:一个用于存储重复的单词,一个用于存储不重复的单词。可以使用HashSet类来实现Set对象。
4. 使用while循环依次读取每一行的内容。
5. 在循环中,使用split方法将每一行内容按照空格切分为单词数组。
6. 使用for循环遍历单词数组。
7. 判断当前单词是否已经存在于不重复的单词Set中。如果存在,则将该单词添加到重复单词Set中;如果不存在,将该单词添加到不重复单词Set中。
8. 循环结束后,关闭Scanner对象。
9. 打印输出重复单词Set和不重复单词Set的内容。
以下是完整代码示例:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class WordSet {
public static void main(String[] args) {
File file = new File("text.txt"); // 替换为实际的文件路径
Set<String> duplicatesSet = new HashSet<>();
Set<String> uniqueSet = new HashSet<>();
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] words = line.split(" ");
for (String word : words) {
if (uniqueSet.contains(word)) {
duplicatesSet.add(word);
} else {
uniqueSet.add(word);
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("重复单词集合:" + duplicatesSet);
System.out.println("不重复单词集合:" + uniqueSet);
}
}
```
注意:
- 代码中的"text.txt"需要替换为实际的文件路径。请保证该文件存在并包含测试文本。
- 本示例中的分隔符仅为一个空格,如果实际文本中的单词分隔符不同,可以相应地修改split方法的参数。
- 根据需要,可以在代码中添加异常处理或其他逻辑。
### 回答3:
编写Java程序实现从文本文件中读取若干行,并将重复的单词存入一个Set对象中,将不重复的单词存入另一个Set对象中,具体实现如下:
1. 首先,我们需要导入Java中处理文件和集合的相关类:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
```
2. 创建一个Java类,编写一个方法来实现读取文本文件并处理单词:
```java
public class Main {
public static void main(String[] args) {
readFile("sample.txt");
}
public static void readFile(String fileName) {
Set<String> duplicateWords = new HashSet<>();
Set<String> uniqueWords = new HashSet<>();
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
String line;
while ((line = br.readLine()) != null) {
String[] words = line.split("\\s+");
for (String word : words) {
if (!word.isEmpty()) {
if (!uniqueWords.add(word)) {
duplicateWords.add(word);
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("重复的单词:" + duplicateWords);
System.out.println("不重复的单词:" + uniqueWords);
}
}
```
在上述代码中,readFile() 方法接收一个文件名作为参数。我们使用 BufferedReader 和 FileReader 类来读取文件,并使用 while 循环逐行读取文件内容。通过使用 split() 方法将每行分割为单词数组。然后,我们使用 foreach 循环遍历每个单词,并根据是否能将它添加到不重复的集合(uniqueWords)中来判断该单词是否是重复的。
3. 在上述代码中,我们假设输入文本文件名称为 sample.txt,你可以根据实际情况进行修改。运行程序,结果将会打印出重复的单词和不重复的单词。
以上就是实现从文本文件中读取若干行,并将重复的单词存入一个Set对象中,将不重复的单词存入另一个Set对象中的Java程序。
阅读全文