风中过客
2015-05-03 19:30
为什么containsKey的时候,没修改不报错呢?
因为Map的键值对应的值是唯一的,而值所映射的键值却有可能是多个的,而Contains方法自带的比较机制是比较索引,也就是地址,所以ContainsValue方法需要改写
个人理解,containsKey()方法中,调用的是String类型的equals()函数,查阅javaAPI文档可知,String类型已经对equals()方法进行了重写:“将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true”。所以就不需要我们进行重写了!
package com.imooc.collection;
import java.util.HashMap;
import java.util.Map;
/** * @author guokewind
* @date 创建时间:2015年5月4日 下午12:01:29
* @version
* @parameter
* @since
* @return */
public class Test3 {
public Map<String, String> students;
/**
* 在构造器中初始化students属性
*/
public Test3() {
this.students = new HashMap<String, String>();
}
public void testPut() {
students.put("1", "xiaoming");
}
public void duibi(String id,String name){
System.out.println(students.containsKey(id));
System.out.println(students.containsValue(name));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test3 test=new Test3();
test.testPut();
Student st=new Student("1","xiaoming");
test.duibi("1","2");
test.duibi("1","xiaoming");
}
}
比较的是字符串吧?比较字符串的时候,是需要写equals的
Java入门第三季
409792 学习 · 4340 问题
相似问题