使用HashSet实现简单学生管理系统
要求
添加学生信息,不允许添加学号相同的学生信息
删除学生信息,根据学号删除学生信息
修改学生信息,根据学号获取学生信息,修改后保存到集合中
查询学生信息,根据学号在控制台显示学生基本信息
1、添加学生信息中,可以使用Set集合中的add方法。但是此时会出现一个问题,那就是添加数据时,两个具有相同学号的对象在进行添加时add方法认为两个对象并不重复,进而将两个对象都添加进入集合中。比如: Student student1 = new Student(“111”),Student student2 = new Student(“111”),student1 与 student2的hash值相同,但是地址并不相同,都可以添加进去。这显然与我们的实际情况并不相符。此时,我们可以重写Object中的hash方法和equals方法。
2、删除学生信息和添加学生信息有相同的问题,因为Set中的remove方法和add方法的判重方式一致,解决方法也是相同的。
3、修改学生信息时显然根据学号索引到学生就可修改信息。
4、查询学生信息时也是比较容易的
代码如下:
Student类
public class Student {
String id;
String name;
String sex;
public String getId() {
return id;
}
public String getName() {
return name;
}
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public Student(String id,String name) {
this.id=id;
this.name=name;
}
public Student(String id,String name,String sex) {
this.id=id;
this.name=name;
this.sex = sex;
}
/**
* 重写equals方法
*/
@Override
public boolean equals(Object obj) {
if(obj instanceof Student) {
return this.id.equals(((Student)obj).id);
}
return false;
}
/**
* 重写hashCode方法
*/
@Override
public int hashCode() {
if(this instanceof Student) {
return this.id.hashCode();
}
return -1;
}
}
管理类:
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Management {
public static Set<Student> students = new HashSet<>();
/**
* 添加学生信息
*/
public static boolean addStudent(Student student) {
if(student.hashCode()>=0)
return students.add(student);
return false;
}
/*
* 删除学生信息
*/
public static boolean deleteStudent(String id) {
for (Student student : students) {
if(id.equals(student.id)) {
return students.remove(student);
}
}
return false;
}
/**
* 修改学生信息
*/
public static void updateStudent(String id) {
for (Student student : students) {
if(id.equals(student.id)) {
System.out.println("请输入学生姓名");
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
student.name=scanner.nextLine();
System.out.println("请输入学生性别 '男' 或 '女'");
student.sex=scanner.nextLine();
break;
}
}
}
/**
* 查询学生信息
*/
public static void select(String id) {
for (Student student : students) {
if(student.id.equals(id)) {
System.out.println("学生学号为"+id);
System.out.println("学生姓名为"+student.name);
System.out.println("学生性别为:"+student.sex);
}
}
}
}
这样简单的学生管理系统就实现了!