问题已经自我排查解决
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
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 (!(obj instanceof Student))
return false;
Student other = (Student) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public void testContainsKeyOrValue() {
//本例中让用户输入某个学生的姓名,再去判断姓名所对应的学生是否包含在这个studentsMap中
//提示输入学生Id
System.out.println("请输入要查询的学生ID:");
Scanner console = new Scanner(System.in);//定义一个Scanner对象
String id = console.next();//取得从键盘上输入的学生id字符串
//在Map中,用containsKey()方法,来判断是否包含某个Key值
System.out.println("你输入的学生id为"+id+",在学生映射表中是否存在"+students.containsKey(id));
//判断如果存在就输出那个学生的姓名
if(students.containsKey(id))
System.out.println("对应的学生为:"+students.get(id).name);
//提示输入学生姓名
System.out.println("请输入要查询的学生姓名:");
String name = console.next();//从键盘上取得输入的学生姓名字符串
//用containsValue()方法,来判断是否包含某个Value值
if(students.containsValue(new Student(null,name)))//先创建一个学生对象,id设置为空,姓名设为name的值,
System.out.println("在学生映射表中,确实包含学生:"+name);//暂时先回到student类验证有没有调用Value有关的equals方法
else
System.out.println("在学生映射表中不存在该学生!");
}
请输入学生ID:
1
请输入学生姓名:
明
成功添加学生:明
请输入学生ID:
2
请输入学生姓名:
红
成功添加学生:红
请输入学生ID:
3
请输入学生姓名:
华
成功添加学生:华
总共有:3个学生
学生:明
学生:红
学生:华
请输入要查询的学生ID:
1
你输入的学生id为1,在学生映射表中是否存在true
对应的学生为:明
请输入要查询的学生姓名:
明
在学生映射表中不存在该学生!