gpt4 book ai didi

java - 使用 Java 读取 CSV 文件以检查重复项

转载 作者:行者123 更新时间:2023-12-01 16:25:53 24 4
gpt4 key购买 nike

我创建了一个程序,可以在 CSV 文件上写入特定信息:ID、姓名、平均值。

我想再次添加数据,但在添加之前,我想检查文件是否已经包含数据,我将不允许其上传。

注意:我已经创建了一个方法来检查用户输入的数据,如果 ID 已被使用,它将不允许用户添加它,但它只能在命令行上使用,所以我想也能够将其连接到文件读取器。

注意:我对读取和写入文件仍然很陌生。

我要添加两件事:

  1. 写入文件

  2. 检查方法。

写入文件:

public void printStudents() throws IOException {
FileWriter fileWriter = new FileWriter("studentList.csv", true);
PrintWriter printWriter = new PrintWriter(fileWriter);

for (int i = 0; i < this.myStudents.size(); i++) {
printWriter.print(
this.myStudents.get(i).getIDNumber() + "," +
this.myStudents.get(i).getName() + ","
+ this.myStudents.get(i).getGPA() + "\n");
}
printWriter.close();```

检查方法如下:

private int findStudent(String studentName) {
for (int i = 0; i < this.myStudents.size(); i++) {
Student student = this.myStudents.get(i);
if (student.getIDNumber().equals(studentName)) {
return i;
}
}
return -1;

}

注意:该方法表明如果“查找学生方法返回-1,则可以成功添加学生”。

最佳答案

我建议你使用LinkedHashMap来保存文件中的数据,使用学生姓名、id号和GPA作为唯一键:

//Here you can read the old CSV file
//...
//Then read each student line by line:
LinkedHashMap<String, Student> hashMap = new LinkedHashMap<String, Student>();
for (int i = 0; i < this.myStudents.size(); i++) {
String tempKey= this.myStudents.get(i).getIDNumber() + this.myStudents.get(i).getName() + this.myStudents.get(i).getGPA();
if(!hashMap.containsKey(tempKey)){
hashMap.put(tempKey, this.myStudents.get(i))
}

//Here is the check method
private boolean findStudent(Student student, LinkedHashMap<String, Student> hashMap) {
boolean isFound = false;
String theKey = student.getIDNumber() + student.getName() + student.getGPA();
if(hashMap.containsKey(theKey)){
isFound = true;
}
return isFound;
}


关于java - 使用 Java 读取 CSV 文件以检查重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62150006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com