用java编写一个程序,实现一下功能,要求设计一个学生student类,包含学号、姓名、出生日期、性别等字段 从input.txt中读取其中的学生信息,并存入学生集合list中 对学生集合list进行排序,按照出生日期从早到晚排序(即年龄由大到小) 将排序后的学生集合list输出到output.txt文件中,输出格式同input.txt:一行一个学生,依次输出学号、姓名、出生日期、性别并用空格隔开
时间: 2024-02-13 18:00:03 浏览: 28
好的,我理解了你的要求。下面是代码实现:
```java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class StudentSorter {
public static void main(String[] args) {
List<Student> students = new ArrayList<Student>();
try {
BufferedReader br = new BufferedReader(new FileReader("input.txt"));
String line;
while ((line = br.readLine()) != null) {
String[] tokens = line.split(" ");
int id = Integer.parseInt(tokens[0]);
String name = tokens[1];
LocalDate birthdate = LocalDate.parse(tokens[2], DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String gender = tokens[3];
Student student = new Student(id, name, birthdate, gender);
students.add(student);
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
Collections.sort(students, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s1.getBirthdate().compareTo(s2.getBirthdate());
}
});
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"));
for (Student student : students) {
bw.write(student.getId() + " " + student.getName() + " "
+ student.getBirthdate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + " "
+ student.getGender());
bw.newLine();
}
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Student {
private int id;
private String name;
private LocalDate birthdate;
private String gender;
public Student(int id, String name, LocalDate birthdate, String gender) {
this.id = id;
this.name = name;
this.birthdate = birthdate;
this.gender = gender;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public LocalDate getBirthdate() {
return birthdate;
}
public String getGender() {
return gender;
}
}
```
这个程序会从 `input.txt` 文件中读取学生信息,存入一个 `List<Student>` 的集合中。然后使用 `Collections.sort()` 方法对集合进行排序,排序的规则是按照学生的出生日期从早到晚排序。最后将排序后的学生集合写入到 `output.txt` 文件中。
请注意,`input.txt` 文件中的每行数据应包含学号、姓名、出生日期和性别,用空格隔开,例如:
```
1 Tom 2000-01-01 Male
2 Lucy 1999-12-31 Female
3 Jack 2001-03-15 Male
```
在 `output.txt` 文件中,每行数据的格式应与 `input.txt` 文件相同。