假设我们有一个像这样的文本文件:

我想做的是使用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/

10-11 20:34