黑马程序员技术交流社区

标题: 集合框架中的并发控制问题 [打印本页]

作者: 张得贵    时间: 2013-5-27 22:16
标题: 集合框架中的并发控制问题
本帖最后由 张得贵 于 2013-5-28 15:09 编辑

我弄不明白sop("obj="+obj)的结果仍热可以打印出java02,毕老师所解释的是remove方法将java02的引用从集合中删除了,但是元素还在集合中,被obj使用,所以打印得出。
另外,既然元素还在集合中,为什么最后的sop(al)又打印不出java02?

Q11.jpg (47.87 KB, 下载次数: 0)

Q11.jpg

Q22.jpg (10.9 KB, 下载次数: 0)

运行结果

运行结果

作者: tshch1989    时间: 2013-5-27 23:11
obj=it.hasNext();相当于,obj=3;你这个时候打印obj的话obj是不是3???应该是的吧!
引用从集合中删除了,集合中就只存在2个引用了,那么java02自然就没有在集合中啦啊

作者: lpflpy    时间: 2013-5-27 23:23
因为集合中存入的是对象的引用,而remove()之后,集合中确实没有这个引用了,所以sop(a1)就打印了两个引用所指向的对象。
而remove()将引用删除了,但是Object obj = it.next();表示把obj这个引用指向了java02这个对象,所以sop(obj)还是打印三个对象;
两次打印语句的打印内容不一样。。。一个是Obj一个是集合;而遍历了三次,所以,obj有三个对象值。al中的java02的引用移除,因此打印2个对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2