(1)定义学生成绩类,学生信息包括学号、姓名、成绩, (2)用ArrayList集合表示多个学生的信息,添加3个学生的信息,用匿名类的方式对集合元素排序,一种是按 成绩降序排序,一种是按学号升序排序,每次排序后输出集合的所有元素。 相关知识,//定义学生成绩类 public class StudentScore { String stuNumber; // 学号 String stuName; // 姓名 float score; //成绩 //带3个参数的构造方法 public StudentScore(String stuNumber, String stuName, float score) { super(); this.stuNumber = stuNumber; this.stuName = stuName; this.score = score; } //显示学生信息 public void show() { System.out.printf("学号:%10s 姓名:%10s 成绩:%6.1f\n",stuNumber,stuName,score); } //重写equals()方法,实现按学号查询 @Override public boolean equals(Object obj) { 【补充代码】 } }
时间: 2024-03-29 11:39:53 浏览: 39
好的,我理解了您的要求,以下是实现您所述功能的示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
//定义学生成绩类
class StudentScore {
String stuNumber; // 学号
String stuName; // 姓名
float score; // 成绩
//带3个参数的构造方法
public StudentScore(String stuNumber, String stuName, float score) {
super();
this.stuNumber = stuNumber;
this.stuName = stuName;
this.score = score;
}
//显示学生信息
public void show() {
System.out.printf("学号:%10s 姓名:%10s 成绩:%6.1f\n", stuNumber, stuName, score);
}
//重写equals()方法,实现按学号查询
@Override
public boolean equals(Object obj) {
if (obj instanceof StudentScore) {
StudentScore s = (StudentScore) obj;
if (s.stuNumber.equals(this.stuNumber)) {
return true;
}
}
return false;
}
}
//用ArrayList集合表示多个学生的信息
ArrayList<StudentScore> list = new ArrayList<>();
list.add(new StudentScore("2021001", "张三", 89.5f));
list.add(new StudentScore("2021002", "李四", 76.0f));
list.add(new StudentScore("2021003", "王五", 92.0f));
//用匿名类的方式对集合元素排序,一种是按 成绩降序排序,一种是按学号升序排序
Collections.sort(list, new Comparator<StudentScore>() {
@Override
public int compare(StudentScore o1, StudentScore o2) {
//按成绩降序排序
//return (int) (o2.score - o1.score);
//按学号升序排序
return o1.stuNumber.compareTo(o2.stuNumber);
}
});
//每次排序后输出集合的所有元素
for (StudentScore s : list) {
s.show();
}
}
}
```
在这个示例中,我们创建了一个`StudentScore`类,表示学生成绩信息。使用`ArrayList`集合表示多个学生的信息,并添加了3个学生的信息。使用匿名类的方式对集合元素进行排序,一种是按成绩降序排序,一种是按学号升序排序。每次排序后输出集合的所有元素。
其中,我们在`StudentScore`类中重写了`equals()`方法,实现按学号查询学生信息的功能。排序时我们使用了`Collections.sort()`方法,并创建了一个匿名类实现了`Comparator`接口,用于比较两个`StudentScore`对象的大小。最后,我们调用`show()`方法输出每个学生的详细信息。