写一串代码,把一个文件(每行一个成语信息,包括成语 拼音 释义等)中只要是重复的成语把整个信息删去,整理后输出到一个新的文件 用java代码
时间: 2024-03-10 11:48:40 浏览: 158
下面是一个实现将一个文件中重复的成语信息删除的Java代码示例:
```java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
public class RemoveDuplicateChengYu {
// 定义一个ChengYu类,包含成语、拼音和释义三个属性
static class ChengYu {
String chengYu;
String pinYin;
String shiYi;
public ChengYu(String chengYu, String pinYin, String shiYi) {
this.chengYu = chengYu;
this.pinYin = pinYin;
this.shiYi = shiYi;
}
// 重写equals和hashCode方法,用于Set去重
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
ChengYu chengYuObj = (ChengYu) obj;
return chengYu.equals(chengYuObj.chengYu);
}
@Override
public int hashCode() {
return chengYu.hashCode();
}
}
public static void main(String[] args) {
String inputFile = "input.txt"; // 输入文件名
String outputFile = "output.txt"; // 输出文件名
Set<ChengYu> chengYuSet = new HashSet<>(); // 用Set存储不重复的成语信息
try (BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) {
String line;
while ((line = reader.readLine()) != null) {
String[] fields = line.split("\t"); // 假设成语信息是用制表符分隔的
if (fields.length >= 3) { // 至少要有成语、拼音和释义三个字段
ChengYu chengYu = new ChengYu(fields[0], fields[1], fields[2]);
if (chengYuSet.add(chengYu)) { // 如果Set中没有该成语信息,则写入输出文件
writer.write(line);
writer.newLine();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
该代码将输入文件中的每行成语信息解析成ChengYu对象,并将其存储在一个Set中。如果Set中没有该成语信息,则将该信息写入输出文件。由于Set可以自动去重,因此只会输出不重复的成语信息。
阅读全文