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

关于containsKey()方法和containsValue()方法,想不通,求大神们解答

  1. containsKey()方法中的参数为什么是String类型的值,而containsValue()方法中的参数用的是一个student类型的对象,是不是既可以是基本类型也可以是对象啊

  2. 为什么containsValue()方法需要重写equals()方法和hashcode()方法,而containsKey()方法不需要

  3. 为什么containsValue()方法要重写hashcode()方法?

提问者:didi1234 2016-04-08 15:53

个回答

  • Aampire乐0
    2016-04-09 10:39:25
    已采纳

    Hashtable继承于Map接口
    contains(Object value)
    测试此映射表中是否存在与指定值关联的键(如果此 Hashtable 将一个或多个键映射到此值,则返回 true)。
    判断容器中是否存在值
    但是contains并非和containsKey的功能一致而是和containsValue功能等同. 之所以说是等同原因是需要实现MAP中的containsValue:
    public boolean containsValue(Object value) {
    return contains(value);
       }
    性能上没有区别

  • 慕丝1322028
    2020-03-19 16:42:19

    JAVA中,String,Integer,Date 等类中已经被自动覆写方法。而老师举的例子中,key是String类的。所以不用覆写。


  • 怒放的生命012
    2016-06-11 21:42:39

    1. String并不是基本数据类型;另外基本数据类型并不能作为key值;