students.containsValue(name);
students.containsValue(new Student(null,name));
这两者之间为什么选后者,前者出来是false。
Map students中存的是键值对,一个key对应一个value。定义Map students时规定了键(key)的泛型是String类型,而值(value)的泛型是Student类型。所以在查找Map students中是否包含某个值对象时,应该传入值对应的类型的参数,也就是Student类型。所以把要查找的学生姓名包装成一个Student类作为要查找的value的值。
首先你要看你定义的value是什么类型的,是String类或是student类;如果你容器中保存的是student类,你传入的数据类型是String,自然是查询不到,返回false;如果是student类,还要去查找是否有这个对象的,如果有返回true,否则返回false.
这里的students是map类型的,其中key是string类型,value是Student类型的,所以在调用他的containsValue方法的时候传给他的应该是一个Student类型的对象。