(1)用一个变量allStu来存储右图所有专业学生: (2)变量用hashmap+hashmap+arraylist嵌套 (3)每个专业学生至少存三个Student对象; (4)支持任意查询、统计。比如: 江苏省多少人?清华多少人?信管学生多少人等 首师大所有学生的平均成绩?
时间: 2023-06-12 07:07:49 浏览: 196
(1) 首先需要定义一个Student类,包含姓名、学号、专业、成绩等信息。
```
public class Student {
private String name;
private String id;
private String major;
private double score;
public Student(String name, String id, String major, double score) {
this.name = name;
this.id = id;
this.major = major;
this.score = score;
}
// getter and setter methods
}
```
(2) 定义一个HashMap<String, HashMap<String, ArrayList<Student>>>,其中外层HashMap的key为省份名称,内层HashMap的key为学校名称,value为该学校所有专业的学生列表。
```
HashMap<String, HashMap<String, ArrayList<Student>>> allStu = new HashMap<>();
```
(3) 初始化allStu,添加至少三个学生到每个专业中。
```
// 江苏省南京大学计算机科学与技术专业学生
ArrayList<Student> csStudents = new ArrayList<>();
csStudents.add(new Student("张三", "20210001", "计算机科学与技术", 90.5));
csStudents.add(new Student("李四", "20210002", "计算机科学与技术", 88.0));
csStudents.add(new Student("王五", "20210003", "计算机科学与技术", 92.3));
// 江苏省清华大学电子工程专业学生
ArrayList<Student> eeStudents = new ArrayList<>();
eeStudents.add(new Student("赵六", "20210004", "电子工程", 85.5));
eeStudents.add(new Student("钱七", "20210005", "电子工程", 89.0));
eeStudents.add(new Student("孙八", "20210006", "电子工程", 91.2));
// 将学生列表添加到内层HashMap中
HashMap<String, ArrayList<Student>> njStu = new HashMap<>();
njStu.put("计算机科学与技术", csStudents);
HashMap<String, ArrayList<Student>> qhStu = new HashMap<>();
qhStu.put("电子工程", eeStudents);
// 将学校列表添加到外层HashMap中
HashMap<String, HashMap<String, ArrayList<Student>>> jiangsuStu = new HashMap<>();
jiangsuStu.put("南京大学", njStu);
jiangsuStu.put("清华大学", qhStu);
// 将江苏省所有学校的学生列表添加到allStu中
allStu.put("江苏省", jiangsuStu);
```
(4) 查询与统计操作可以通过遍历allStu中的元素来实现。
- 江苏省有多少人
```
int jiangsuCount = 0;
HashMap<String, HashMap<String, ArrayList<Student>>> jiangsuMap = allStu.get("江苏省");
for (HashMap<String, ArrayList<Student>> schoolMap : jiangsuMap.values()) {
for (ArrayList<Student> stuList : schoolMap.values()) {
jiangsuCount += stuList.size();
}
}
System.out.println("江苏省共有" + jiangsuCount + "人");
```
- 清华大学有多少人
```
int qhCount = 0;
HashMap<String, HashMap<String, ArrayList<Student>>> jiangsuMap = allStu.get("江苏省");
HashMap<String, ArrayList<Student>> qhMap = jiangsuMap.get("清华大学");
for (ArrayList<Student> stuList : qhMap.values()) {
qhCount += stuList.size();
}
System.out.println("清华大学共有" + qhCount + "人");
```
- 信管学生有多少人
```
int xmCount = 0;
HashMap<String, HashMap<String, ArrayList<Student>>> jiangsuMap = allStu.get("江苏省");
HashMap<String, ArrayList<Student>> njMap = jiangsuMap.get("南京大学");
ArrayList<Student> xmStuList = njMap.get("计算机科学与技术");
xmCount = xmStuList.size();
System.out.println("南京大学计算机科学与技术专业共有" + xmCount + "人");
```
- 首师大所有学生的平均成绩
```
HashMap<String, HashMap<String, ArrayList<Student>>> beijingMap = allStu.get("北京市");
HashMap<String, ArrayList<Student>> ssdMap = beijingMap.get("首都师范大学");
int totalScore = 0;
int totalCount = 0;
for (ArrayList<Student> stuList : ssdMap.values()) {
for (Student stu : stuList) {
totalScore += stu.getScore();
totalCount++;
}
}
double avgScore = (double) totalScore / totalCount;
System.out.println("首都师范大学所有学生的平均成绩为:" + avgScore);
```
阅读全文