我有一个包含姓名和出生日期的文本文件,我需要按日期排序,比如
Fname LastName dd-MM-yyyy
Fname2 Lname2 dd-MM-yyyy
Fname3 Lname3 dd-MM-yyyy
Fname4 Lname4 dd-MM-yyyy
Fname5 Lname5 dd-MM-yyyy
我可以通过匹配像"\\d\\d-\\d\\d-\\d\\d\\d\\d"
这样的RegEx和名称为Hashkey来将DOB作为哈希值,因此按DOF排序很容易。或建议我如何将其拆分为Column [0] Column [1],以便Column [1]具有Dates。
答案 0 :(得分:0)
您的第一个问题是确定如何拆分名称并不容易。有些姓氏有空格,有些名字有空格:
Jill St. John
Billy Bob Thornton
我建议添加分隔符以便更轻松地解决这个问题。
然后,将名称和DOB字段封装在名为“Person”的类中,例如。
将您的人员添加到列表中。然后,您可以实施Collections.sort对列表进行排序。
使用哈希值的问题是花园杂乱的HashMap和TreeMap类中不允许重复。也就是说,如果两个人在同一个日期过生日,那么一个人将被覆盖。
答案 1 :(得分:0)
无论如何,您必须从文件中提取这些数据。所以我建议为数据创建类并实现类似的接口:
public class Person implements Comparable<Person> {
static final SimpleDateFormat DATE_PARSER = new SimpleDateFormat("dd-MM-yyyy");
String firstName;
String lastName;
Date dateOfBirth;
public Person(String firstName, String lastName, String dateOfBirth) throws ParseException {
this.firstName = firstName;
this.lastName = lastName;
this.dateOfBirth = DATE_PARSER.parse(dateOfBirth);
}
@Override
public int compareTo(Person o) {
return this.dateOfBirth.compareTo(o.dateOfBirth);
}
}
现在,在阅读过程中,只需将所有这些记录放入SortedSet实施中,例如:TreeSet。您还可以将记录存储到数组或列表中,并使用Arrays或Collections类对其进行排序。最重要的部分是实施可比较。