java集合能够查询学生所选的课,也可以通过课反向查询课下面的学生(显示学号+姓名)
时间: 2023-12-03 07:43:31 浏览: 53
Java集合中,我们可以使用Map来存储学生选课信息和课程下的学生信息。
首先,我们可以定义一个学生类,包含学号和姓名属性:
```java
public class Student {
private String id;
private String name;
// 构造方法、getter和setter方法省略
}
```
然后,我们可以定义一个课程类,包含课程名称和下属学生列表属性:
```java
public class Course {
private String name;
private List<Student> students;
// 构造方法、getter和setter方法省略
}
```
接着,我们可以使用Map来存储学生选课信息和课程下的学生信息。其中,Map的键为课程名称,值为课程对象。
```java
Map<String, Course> courses = new HashMap<>();
```
当学生选课时,我们可以通过课程名称获取对应的课程对象,然后将学生信息添加到课程对象的学生列表中。
```java
public void selectCourse(String courseId, Student student) {
if (courses.containsKey(courseId)) {
Course course = courses.get(courseId);
course.getStudents().add(student);
} else {
Course course = new Course(courseId, new ArrayList<>());
course.getStudents().add(student);
courses.put(courseId, course);
}
}
```
查询学生所选的课时,我们可以通过学生的学号遍历所有课程的学生列表,找到学号匹配的学生所在的课程。
```java
public List<String> getCoursesByStudent(String studentId) {
List<String> courseList = new ArrayList<>();
for (Course course : courses.values()) {
for (Student student : course.getStudents()) {
if (student.getId().equals(studentId)) {
courseList.add(course.getName());
break;
}
}
}
return courseList;
}
```
反向查询课下面的学生时,我们可以通过课程名称获取对应的课程对象,然后遍历课程对象的学生列表,输出学号和姓名信息。
```java
public List<String> getStudentsByCourse(String courseId) {
List<String> studentList = new ArrayList<>();
if (courses.containsKey(courseId)) {
Course course = courses.get(courseId);
for (Student student : course.getStudents()) {
studentList.add(student.getId() + " " + student.getName());
}
}
return studentList;
}
```
阅读全文