假设我们有一个像这样的文本文件:
我想做的是使用DatePeople和DateComparator类(使用collection.sort)以降序生成列表。
我真正无法理解的是在阅读txt文件后,如何将它们以正确的方式作为DatePeople对象放入arraylist中?
List<DatePeople> list = new ArrayList();
Scanner filenamereader = new Scanner(System.in);
System.out.println("Enter file name(input.txt): ");
String fileName = filenamereader.next();
System.out.println(fileName);
filenamereader.close();
try{
Scanner s = new Scanner(new File(fileName));
while (s.hasNext()){
list.add()); ??
//list.add(new DatePeople(name,year,month,day)); something like this i guess ?
}
s.close();
}catch(IOException io){
io.printStackTrace();
}
日期人:
public class DatePeople
{
DatePeople(){
}
private String name;
private int day;
private int month;
private int year;
}
DateComparator:
public class DateComparator implements Comparator<DatePeople> {
public DateComparator(){
}
@Override
public int compare(DatePeople o1, DatePeople o2) {
return 0;
}
}
最佳答案
如果您知道数据是标准化的,则可以根据已知规则对其进行解析。
String line = s.nextLine();
String[] bits = line.split(" ", 2);
String name = bits[0];
String[] dateBits = bits[1].split("-", 3);
int year = Integer.parseInt(dateBits[0]);
int month = Integer.parseInt(dateBits[1]);
int day = Integer.parseInt(dateBits[2]);
list.add(new DatePeople(name, year, month, day));
然后,您将需要一个构造函数,在其中传递DatePeople中的值,即:
DatePeople(String n, int y, int m, int d) {
this.name = n;
this.year = y;
this.month = m;
this.day = d;
}
另外,在DatePeople中可以有一个parseDatePerson(String line){}方法,其中包含我的第一个代码段,然后您只需将
list.add(new DatePeople(s.nextLine()));
这将在DatePeople中调用如下所示的构造函数:
DatePeople(String line) {
parseDatePerson(line);
}
关于java - 读取文本文件并将行作为对象放入列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49004545/