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

对视频的疑问--Map 中的containsValue() 方法的参数是什么

我按照视频中的步骤写代码,但是我看一下JDK 的API,发现containsValue()的方法的参数是Object value,而containsKey()的方法参数是Object key。在前面的实例化中测试containsKey()时传递的是String ID就可以找得到,但是测试containsValue()时传递的是一个对象,这与API不符合啊?!而且我试过了,如果传递的是一个String name给containsValue()----就像是String ID传递给containsKey()方法一样,那么无论改写equals与否,都是找不到。所以,到底这两个方法,使用的原理是什么,使用的参数又是什么,搞糊涂了。

提问者:jinphic 2017-01-28 00:41

个回答

  • enthusiastic
    2017-01-29 12:15:05
    已采纳

    你用containsValue()方法查询是要根据你的Map定义的泛型来决定,你在Map类型的students中的value就是Student类,所以传递参数肯定也要是Student类的对象,而不是String name。简单来说就是,你查students的内部元素,要查找是否存在某个元素,也应该与students定义类型一致,否则肯定找不到。主要看你定义的泛型public Map<String,Student> students;