问题已经自我排查解决

来源:6-4 学生选课---判断 Map 中是否包含指定的 key 和 value

fsnh

2019-12-03 23:48

@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

对应的学生为:明

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

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


写回答 关注

1回答

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

    问题已自我排查解决

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题