用java写出,每个学生都有自己的一个班级,请利用HashMap集合存储如下数据 王五,17岁,成绩70分,对应班级为:软件1班 提示:即key为学生类,value为班级 1)定义H 4)利用TreeMap根据学生年龄升序后,若年龄相等则根据分数降序排序,打印排序后信息。
时间: 2024-10-19 12:10:43 浏览: 33
为了实现上述功能,我们可以先定义一个`Student`类,然后创建一个`HashMap<Student, String>`来存储学生的姓名、年龄、成绩和对应的班级。接下来,我们将实现根据年龄和分数排序的功能。以下是相应的Java代码:
```java
import java.util.*;
class Student {
String name;
int age;
int score;
String className;
public Student(String name, int age, int score, String className) {
this.name = name;
this.age = age;
this.score = score;
this.className = className;
}
@Override
public String toString() {
return "Name: " + name + ", Age: " + age + ", Score: " + score + ", Class: " + className;
}
}
public class Main {
public static void main(String[] args) {
// 创建 HashMap 存储学生信息
HashMap<Student, String> studentClassMap = new HashMap<>();
// 添加学生信息
studentClassMap.put(new Student("王五", 17, 70, "软件1班"), null);
// 定义TreeMap进行排序
Map<String, Student> sortedMap = new TreeMap<>((s1, s2) -> {
if (s1.age == s2.age) {
return s1.score - s2.score;
} else {
return s1.age - s2.age;
}
});
// 将 HashMap 转移到 TreeMap 并排序
for (Map.Entry<Student, String> entry : studentClassMap.entrySet()) {
sortedMap.put(entry.getKey().name, entry.getKey());
}
// 打印排序后的信息
for (Student student : sortedMap.values()) {
System.out.println(student);
}
}
}
```
在这个例子中,我们首先将学生对象添加到HashMap中,然后使用TreeMap根据年龄升序排序,如果年龄相同再按分数降序排序。最后,我们打印出排序后的学生列表。
阅读全文