java定义包含学号、姓名和成绩信息的学生类Student。在测试类中定义存放n个学生对象存放到某个集合对象中(具体集合自行确定),然后按成绩进行降序排列,并将排序结果(类Student对象)保存到文件stud.dat中,再读出文件stud.dat中所有的学生信息并显示。
时间: 2024-03-03 22:50:50 浏览: 75
好的,我可以帮您解答这个问题。
首先,我们需要定义一个Student类,包含学号、姓名和成绩三个属性。代码如下:
```java
public class Student implements Comparable<Student> {
private String id; // 学号
private String name; // 姓名
private int score; // 成绩
public Student(String id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public int compareTo(Student o) {
return o.score - this.score; // 按成绩降序排序
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", score=" + score +
'}';
}
}
```
接下来,我们需要在测试类中创建n个学生对象,并将它们存放到某个集合对象中,然后对集合进行排序,并将排序结果保存到文件stud.dat中。代码如下:
```java
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) {
List<Student> students = new ArrayList<>(); // 创建一个存放学生对象的集合
students.add(new Student("001", "张三", 80));
students.add(new Student("002", "李四", 90));
students.add(new Student("003", "王五", 70));
students.add(new Student("004", "赵六", 85));
students.add(new Student("005", "钱七", 95));
Collections.sort(students); // 对集合进行排序
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("stud.dat"))) {
oos.writeObject(students); // 将排序结果保存到文件stud.dat中
} catch (IOException e) {
e.printStackTrace();
}
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("stud.dat"))) {
List<Student> result = (List<Student>) ois.readObject(); // 从文件stud.dat中读取所有学生信息
for (Student student : result) {
System.out.println(student); // 显示所有学生信息
}
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
```
运行测试类,就可以看到排序后的学生信息了。
阅读全文