为了账号安全,请及时绑定邮箱和手机立即绑定

还是没明白

请问一下问什么if (students.containsValue(new Student(null,name)))不能写成if (students.containsValue(name))

而前面传id的时候

if(students.containsKey(id)==true)

就可以直接用id传进来?

正在回答

2 回答

我的理解是students在前面已经规定了泛型为<String , Student>,所以在调用containsValue()方法的时候也需要传入对应的Student对象进行比较。

1 回复 有任何疑惑可以回复我~
#1

yebo 提问者

有道理!非常感谢!
2015-03-26 回复 有任何疑惑可以回复我~
#2

风中过客

if (students.containsValue(new Student(null,name)))//这里new Student 相当于将name装进Student中去,调用构造方法为Student 中的name赋值 我是这样理解的。
2015-05-03 回复 有任何疑惑可以回复我~

前者是传的对象,后面只是传了一个name变量

0 回复 有任何疑惑可以回复我~
#1

yebo 提问者

id和name不是都是String id = console.next()/String name = console.next()声明的吗,为什么会有这样的区别呢?是因为key和value的不同吗
2015-03-26 回复 有任何疑惑可以回复我~
#2

hmily8003 回复 yebo 提问者

不对,Key直接是Map的一个属性,所以可以用Map对象去调用,而name却是Student类里面的一个属性,如果不创建一个Student类的对象,是无法调用name属性的。
2015-06-19 回复 有任何疑惑可以回复我~
#3

hmily8003 回复 hmily8003

简单点说,我们可以理解为Map集合中有两个属性,一个是key 另一个是Student类的对像, 只有这两个才能直接调用,而我们要比较的,只是Student内部的其中一个name的属性值而矣。
2015-06-19 回复 有任何疑惑可以回复我~
#4

慕粉3170877 回复 hmily8003

原来是这样理解。之前一直理解那个key就是Student中的id,讲的很透彻
2016-06-19 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

还是没明白

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信