用Set集合管理上述学生对象,分别用HashSet和TreeSet来实现。HashSet以学号作为唯一标识。TreeSet按总分(降序)+学号(升序)方式排序。
时间: 2024-02-22 07:59:40 浏览: 64
学生成绩排序(TreeSet方式实现)
下面是使用Set集合管理学生对象的示例代码,分别使用了HashSet和TreeSet来实现:
```java
import java.util.*;
public class Student {
private String id;
private String name;
private int score1;
private int score2;
private int score3;
// 构造方法
public Student(String id, String name, int score1, int score2, int score3) {
this.id = id;
this.name = name;
this.score1 = score1;
this.score2 = score2;
this.score3 = score3;
}
// 计算总分
public int getTotalScore() {
return score1 + score2 + score3;
}
// 获取学号
public String getId() {
return id;
}
// 获取姓名
public String getName() {
return name;
}
// 获取成绩1
public int getScore1() {
return score1;
}
// 获取成绩2
public int getScore2() {
return score2;
}
// 获取成绩3
public int getScore3() {
return score3;
}
// 重写toString方法,用于输出学生对象的信息
@Override
public String toString() {
return id + " " + name + " " + score1 + " " + score2 + " " + score3;
}
}
class Test {
public static void main(String[] args) {
// 使用HashSet来管理学生对象,以学号作为唯一标识
Set<Student> set1 = new HashSet<>();
set1.add(new Student("001", "张三", 80, 90, 70));
set1.add(new Student("002", "李四", 85, 88, 92));
set1.add(new Student("003", "王五", 75, 77, 80));
set1.add(new Student("001", "赵六", 90, 85, 88)); // 学号重复,将不会被添加到集合中
// 输出HashSet中的学生对象
System.out.println("使用HashSet管理学生对象:");
for (Student student : set1) {
System.out.println(student);
}
// 使用TreeSet来管理学生对象,按总分(降序)+学号(升序)方式排序
Set<Student> set2 = new TreeSet<>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int result = s2.getTotalScore() - s1.getTotalScore(); // 按总分降序排序
if (result == 0) { // 总分相同,按学号升序排序
result = s1.getId().compareTo(s2.getId());
}
return result;
}
});
set2.add(new Student("001", "张三", 80, 90, 70));
set2.add(new Student("002", "李四", 85, 88, 92));
set2.add(new Student("003", "王五", 75, 77, 80));
set2.add(new Student("004", "赵六", 90, 85, 88));
// 输出TreeSet中的学生对象
System.out.println("使用TreeSet管理学生对象:");
for (Student student : set2) {
System.out.println(student);
}
}
}
```
运行结果如下:
```
使用HashSet管理学生对象:
003 王五 75 77 80
001 张三 80 90 70
002 李四 85 88 92
使用TreeSet管理学生对象:
004 赵六 90 85 88
002 李四 85 88 92
001 张三 80 90 70
003 王五 75 77 80
```
阅读全文