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

我想做的是使用 DatePeople 和 DateComparator 类(使用 collection.sort)按降序生成一个列表

我真正无法理解的是,在阅读txt文件后,我如何将它们作为DatePeople对象以正确的方式放入数组列表中?

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; 
 
 
    } 

日期比较器:

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); 
} 


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!