问答详情
源自:6-4 学生选课---判断 Map 中是否包含指定的 key 和 value

问题已经自我排查解决

@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

对应的学生为:明

请输入要查询的学生姓名:

在学生映射表中不存在该学生!


提问者:fsnh 2019-12-03 23:48

个回答

  • fsnh
    2019-12-11 22:45:38

    问题已自我排查解决