A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胥文 中级黑马   /  2013-1-30 00:26  /  1343 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-1-31 22:09 编辑

ArrayList a= new ArrayList();
a.add("java01");
a.add("java02");
a.add("java03");
Iterator it =a.iterator();
while(it.hasNext())
{
       Object obj = it.next();
       if(obj.equals("java01"))
       {
                 it.remove();
        }
        System.out.println(obj);//obj的结果是java01,java02,java03


}
System.out.println(a);//a的结果是java02,java03


对于obj的输出结果不是很理解?

4 个回复

正序浏览
本帖最后由 方寅生 于 2013-1-30 11:22 编辑

    Object obj = it.next(); //迭代器赋值给obj
    if(obj.equals("java01"))
    {
                 it.remove();//迭代器这里的remove,不会改变obj的值
     }

评分

参与人数 1黑马币 +9 收起 理由
舒远 + 9

查看全部评分

回复 使用道具 举报
看我代码上的注释,希望你明白。

ArrayList a= new ArrayList();
a.add("java01");
a.add("java02");
a.add("java03");
Iterator it =a.iterator();
while(it.hasNext())
{
       Object obj = it.next(); //虽然后面有个删除java01的操作,但是obj已经存储了三个对象,删除动作在这的后面,对这是没影响的。
       if(obj.equals("java01"))
       {
                 it.remove();
        }
        System.out.println(obj);//这里打印的是obj,上面注释那说明了,所以这的结果肯定还是java01,java02,java03


}
System.out.println(a);//这里打印的是a,a集合里面被删除了java01,所以结果就是java02,java03

评分

参与人数 1技术分 +1 收起 理由
舒远 + 1 赞一个!

查看全部评分

回复 使用道具 举报
it.remove();remove方法只是去掉了那个java01的引用,但是那个对象还在此Object里面啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马