第4节 学生选课——判断Map中是否包含指定的key和value
//测试Map中是否包含某个key或者value值
public void testContainsKeyOrValue(){
//提示输入学生id
System.out.println("请输入要查询的学生Id:");
Scanner scanner=new Scanner(System.in);
//在Map中使用containsKey()方法,来判断是否包含某个key值
String id=scanner.next();
System.out.println("您输入的学生id为:"+id+"是否包含此Key:"+students.containsKey(id));
if(students.containsKey(id)){
System.out.println("对应的学生为:"+students.get(id).name);
}
//在Map中使用containsValue()方法,来判断是否包含某个Value值
//提示输入学生姓名
System.out.println("请输入学生姓名:");
String name=scanner.next();
if(students.containsValue(new Student(null,name)))
System.out.println("在学生映射表中确实包含该学生"+name);
else
System.out.println("映射表中不包含该学生!");
}
containsValue()也要调用equals和hashcode方法,此处比较学生姓名,仅对name重写这两个方法
@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;
}