java 实现设计一个学生student类,包含学号、姓名、出生日期、性别等字段 从input.txt(从附件下载)中读取其中的学生信息,并存入学生集合list中 对学生集合list进行排序,按照出生日期从早到晚排序(即年龄由大到小) 将排序后的学生集合list输出到output.txt文件中,输出格式同input.txt:一行一个学生,依次输出学号、姓名、出生日期、性别并用空格隔开
时间: 2024-02-04 18:03:23 浏览: 45
好的,以下是 Java 实现:
首先,我们定义一个 `Student` 类,包含学号、姓名、出生日期、性别等字段,并实现对应的构造方法。然后,我们定义一个 `StudentSorter` 类,用于对学生集合按照出生日期从早到晚排序。最后,我们在 `Main` 类中读取输入文件,创建学生对象并存入学生集合中,使用 `StudentSorter` 对学生集合进行排序,并将排序后的结果写入输出文件。
代码如下:
```java
import java.io.*;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
class Student {
private String id;
private String name;
private LocalDate birthDate;
private String gender;
public Student(String id, String name, String birthDate, String gender) {
this.id = id;
this.name = name;
this.birthDate = LocalDate.parse(birthDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
this.gender = gender;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public LocalDate getBirthDate() {
return birthDate;
}
public String getGender() {
return gender;
}
@Override
public String toString() {
return id + " " + name + " " + birthDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + " " + gender;
}
}
class StudentSorter implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
return s1.getBirthDate().compareTo(s2.getBirthDate());
}
}
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
try (Scanner scanner = new Scanner(new File("input.txt"))) {
while (scanner.hasNextLine()) {
String[] parts = scanner.nextLine().split(" ");
Student student = new Student(parts[0], parts[1], parts[2], parts[3]);
students.add(student);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Collections.sort(students, new StudentSorter());
try (PrintWriter writer = new PrintWriter(new FileWriter("output.txt"))) {
for (Student student : students) {
writer.println(student);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在 `Student` 类中,我们使用了 Java 8 中新增的 `LocalDate` 类来处理日期,并使用 `DateTimeFormatter` 类来格式化日期字符串。在 `StudentSorter` 类中,我们实现了 `Comparator` 接口的 `compare` 方法,用于对学生集合进行排序。
在 `Main` 类中,我们首先读取输入文件,创建学生对象并存入学生集合中;然后使用 `StudentSorter` 对学生集合进行排序;最后将排序后的结果写入输出文件。在文件读写方面,我们使用了 Java 7 中新增的 try-with-resources 语句,可以自动关闭文件资源,避免了手动关闭文件资源的繁琐操作。