在java中使用系统的API来完成,定义一个集合类存储学生信息(学号,姓名,身份证号),要求分别定义方法实现如下功能: 1、根据姓名查找学生信息(注意姓名可重复)2、附加题:根据学号的自然顺序对学生进行排序。
时间: 2023-12-03 21:42:21 浏览: 135
下面是一个简单的实现,使用Java中的HashMap作为集合类存储学生信息,其中学号作为键,学生信息对象作为值。同时,为了支持按姓名查询,我们使用一个ArrayList来存储每个姓名对应的所有学生信息对象。
```java
import java.util.*;
public class StudentCollection {
private Map<String, Student> studentsByNumber = new HashMap<>();
private Map<String, List<Student>> studentsByName = new HashMap<>();
public void addStudent(Student student) {
studentsByNumber.put(student.getNumber(), student);
if (!studentsByName.containsKey(student.getName())) {
studentsByName.put(student.getName(), new ArrayList<>());
}
studentsByName.get(student.getName()).add(student);
}
public Student findStudentByName(String name) {
if (!studentsByName.containsKey(name)) {
return null;
}
List<Student> students = studentsByName.get(name);
return students.get(0); // 返回第一个匹配的学生信息对象
}
public List<Student> findAllStudentsByName(String name) {
if (!studentsByName.containsKey(name)) {
return Collections.emptyList();
}
return studentsByName.get(name); // 返回所有匹配的学生信息对象
}
public List<Student> getAllStudentsSortedByNumber() {
List<Student> students = new ArrayList<>(studentsByNumber.values());
Collections.sort(students, Comparator.comparing(Student::getNumber));
return students;
}
}
```
在上面的代码中,我们定义了一个`Student`类,表示学生信息对象,其中包含学号、姓名和身份证号等属性。`StudentCollection`类表示学生信息集合类,包含两个成员变量,一个按学号存储学生信息对象的Map,一个按姓名存储学生信息对象列表的Map。
其中,`addStudent`方法用于向集合中添加一个学生信息对象,`findStudentByName`方法用于查找第一个匹配指定姓名的学生信息对象,`findAllStudentsByName`方法用于查找所有匹配指定姓名的学生信息对象,`getAllStudentsSortedByNumber`方法用于按学号对所有学生信息对象进行排序并返回一个列表。
需要注意的是,如果按姓名查找,可能会有多个学生信息对象匹配,因此我们使用一个列表来存储这些学生信息对象。同时,如果没有任何学生信息对象匹配,我们返回一个空列表或者null值。
阅读全文