ENCOUTER
2015-04-15 18:34
Student st=students.get(stuID);这里面的 是定义了一个学生对象st来接收 students里面的一个键值对吗?
get(key)得到的是这个key对应的value 去看看api上面对方法的描述应该是 获取值,没有映射关系;
不对。
在Map集合中,键对象和值对象是对应的。Student st=students.get(stuID); 这一语句的解读,需要解读它里面各个参数的对应关系。
首先得清楚stuID对象是啥,怎么来的,意义是啥。stuID对象在for-each循环中首次定义出现,它用来装keySet集合里的String类型元素--students对象中的键对象。而students对象中的键对象是我们在定义Map集合的对象students时定义的:public Map<String,Student> students; ,这句表明students对象中有两个对应的对象,一个是键对象,类型是String类;一个是其对应的值对象,类型是Student类。然后定义了一个泛型是String类型的Set集合keySet,用来装students对象的所有键对象(类型为String类)。因为Map集合中,键对象和值对象是对应的,所以知道了students的键对象也就可以知道其对应的值对象。然后就是从Set集合中依次取出集合中的元素,也就是students对象的键对象,放在stuID中。这就是stuID的来源,及其意义。
然后,知道了students的键对象stuID,调用students.get(stuID)方法,得到其对应的值对象。在最开始定义Map集合对象students时,限定了值对象的类型-Student类,所以这里定义一个Student的对象st,让students的值对象指向st的引用,即Student st=students.get(stuID) ,这样就成功地把students中键对象对应的值对象取出来了。
“键值对吗?”的意思是“键值,对吗?”还是“键值对 吗?”
Java入门第三季
409792 学习 · 4340 问题
相似问题