逐行比较CSV文件和Java
我的代码示例如下:
File myFile = new File("C:\\Windows\\Temp\\fileName.csv");
try {
Scanner myScanner = new Scanner(myFile);
while(myScanner.hasNextLine()) {
String data = myScanner.nextLine();
String[] fields = data.split(",");
name = fields[0];
age = Integer.parseInt(fields[1]);
birthday = fields[2];
storeVisitDate = fields[3];
}
Person myPerson = new Person(name,age,birthday,storeVisitDate);
}
}
我有一个单独的类叫做“Person”,它根据CSV文件的输入实例化一个对象
我的任务是准备一个输出,在一行中生成一个人的姓名、年龄、生日和店铺访问日期,但是,如果此人有多个店铺访问日期,我应该只在下一行中显示店铺访问日期
我怎样才能比较当前行和下一行,看它是否与该人的姓名相同? 此外,我不允许创建任何ArrayList/List
样品。CSV文件内容: Sample of .CSV file contents
多谢各位
人员类别:
public class Person{
private String name;
private int age;
private String birthday;
private String dateOfVisit;
public Person(String data)
{
String[] info = data.split(",");
name = info[0];
age = Integer.parseInt(info[1]);
birthday = info[2];
dateOfVisit = info[3];
}
}
# 1 楼答案
这是一个经典的数据处理练习,让我想起了30多年前我学习COBOL编程的时候。基本算法如下:
在您的例子中,如果两个
Person
具有相同的name
,则它们是相同的根据上述算法,您需要保存最后的
Person
详细信息下面是实现java代码
请注意,您需要关闭
Scanner
。上面的代码通过try-with-resources实现了这一点使用您提供的示例数据,上述代码的输出如下所示