黑马程序员技术交流社区
标题:
有关迭代器的问题
[打印本页]
作者:
代文娟
时间:
2013-8-30 10:06
标题:
有关迭代器的问题
import java.util.*;
class ListDemo
{
public static void main(String[] args)
{
ArrayList l=new ArrayList();
l.add("java01");
l.add("java02");
l.add("java03");
l.add("java04");
Iterator it=l.iterator();
while (it.hasNext())
{
Object obj=it.next();
if(obj.equals("java02"))
it.remove();
sop(obj);
}
sop(l);
复制代码
作者:
肥猫
时间:
2013-8-30 10:11
什么问题啊,描述清除啊。问题写在代码注释里也好啊。
作者:
代文娟
时间:
2013-8-30 10:17
肥猫 发表于 2013-8-30 10:11
什么问题啊,描述清除啊。问题写在代码注释里也好啊。
刚才一不小心给发出去了
sop(obj); 这句话为什么能打印出来呢,当检查到java02时不是移除了吗,毕老师说是只是把java02的引用从集合中删除了,那到底是怎么回事,还是
不太明白,那最后打印的没有java02,那他什么时候删除的呢?
作者:
肥猫
时间:
2013-8-30 10:19
首先,你那打印的是obj变量,it.remove()方法删除的是集合内容,你obj变量已经被赋值,打印obj变量跟集合内的元素被不被删没关系。
作者:
2012
时间:
2013-9-1 14:24
集合中都是存的对象的引用,remove只删除了集合中的引用,而对象还在被obj调用,所以还在,没被垃圾机制回收,因此能够打印出来。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2