任务需求:
用HashSet模拟实现学生信息管理系统中的增删改查。
往HashSet集合中存入自定对象时,姓名和年龄相同为同一个人,
属于重复元素,不能加入。
所需知识点:
1.Set接口的实现类HashSet;
代码如下:
Student.java:
package cn.demo.student;
public class Student {
private String name ;
private int age ;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
Main.java:
package cn.demo.main;
import java.util.HashSet;
import java.util.Scanner;
import cn.demo.student.Student;
public class Main {
public static void main(String[] args) {
Demo();
}
private static void Demo() {
HashSet<Student> hs = new HashSet<>() ;
int newFlag = 0 ;
while(newFlag==0){
Show();
Scanner scr = new Scanner(System.in);
int number = scr.nextInt() ;
if(number==1){
ADD(hs, scr);
}else if(number==2){
Remove(hs, scr);
}else if(number==3){
Amend(hs, scr);
}else if(number==4){
Refer(hs);
}else{
System.out.println("退出!");
newFlag = 1 ;
}
}
}
private static void Refer(HashSet<Student> hs) {
System.out.println();
System.out.println("--------查询学生信息--------");
System.out.println("所有学生信息如下:");
System.out.println("姓名 年龄");
for (Student student : hs) {
System.out.println(student.getName()+" "+student.getAge());
}
}
private static void Amend(HashSet<Student> hs, Scanner scr) {
System.out.println();
System.out.println("--------修改学生信息--------");
System.out.println("请输入所要修改学生的名字:");
String newName = scr.next() ;
int flag = 0 ;
for(Student stu : hs){
if(newName.equals(stu.getName())){
System.out.println("输入修改的新名字:");
String newName1 = scr.next() ;
System.out.println("输入修改的新年龄:");
int newAge1 = scr.nextInt() ;
stu.setName(newName1);
stu.setAge(newAge1);
System.out.println("修改成功!");
flag = 1 ;
break ;
}
}
if(flag==0){
System.out.println("没有此人!");
}
}
private static void Remove(HashSet<Student> hs, Scanner scr) {
System.out.println();
System.out.println("--------删除学生信息--------");
System.out.println("请输入所要删除学生的名字:");
String newName = scr.next() ;
int flag = 0 ;
for(Student stu : hs){
if(newName.equals(stu.getName())){
hs.remove(stu);
System.out.println("删除成功!");
flag = 1 ;
break ;
}
}
if(flag==0){
System.out.println("没有此人!");
}
}
private static void ADD(HashSet<Student> hs, Scanner scr) {
System.out.println();
System.out.println("--------添加学生信息--------");
System.out.println("添加学生信息的数量为:");
int n = scr.nextInt() ;
for(int i=0;i<n;i++){
System.out.println("学生的姓名为:");
String name = scr.next() ;
System.out.println("学生的年龄为:");
int age = scr.nextInt() ;
hs.add(new Student(name,age));
}
}
private static void Show() {
System.out.println("--------学生管理系统--------");
System.out.println(" 1.增加");
System.out.println(" 2.删除");
System.out.println(" 3.修改");
System.out.println(" 4.查询");
System.out.println(" 5.退出");
System.out.println("请输入您的选择:");
}
}