黑马程序员技术交流社区

标题: Iterator 遍历集合 可以删除元素,yes or no? [打印本页]

作者: suiabing    时间: 2012-5-2 23:22
标题: Iterator 遍历集合 可以删除元素,yes or no?
本帖最后由 隋丙跃 于 2012-5-3 00:54 编辑

public static void method_1()
{
        Collection s = new HashSet();
        s.add("zhangsan");
        s.add("mike");
        s.add("lili");
        Iterator it = s.iterator();
        while()
        {
                String str = (String)it.next();
                System.out.println(str);
                if(s.equals(lili))
                {
                        s.remove(str);//异常
//                        s.remove("lili");//正常
                }
        }
}


迭代器问题,我直接删除str就发生异常,但是删除丽丽 lili就可以啊 木事的!迭代的时候到底能不能操作集合元素呢?


while 忘了打了(it.hasNext())
作者: 金肖    时间: 2012-5-2 23:47
在迭代时,只能使用迭代器中的方法操作集合中的元素,不可以通过该集合对象的方法操作,
Iterator中,只能对元素进行判断,取出和删除操作,如果要对元素进行修改,就需要其子接
口,ListIterator来完成。
作者: 何阳    时间: 2012-5-2 23:58
public static void method_1()
{
        Collection s = new HashSet();
        s.add("zhangsan");
        s.add("mike");
        s.add("lili");
        Iterator it = s.iterator();
        while()
        {
                String str = (String)it.next();
                System.out.println(str);
                                //你那集合去和一个字符串对象比地址值,你是怎么认为的...
                                //这个条件会永远的成立,即if永远会运行,你在一个while循环中操作的
                                //一个元素还没结束,你就想删除他,你说迭代器纠结不....
                                //Iterator接口有三个方法,next() hasNext() remove(),肯定有删除
              
  if(s.equals(lili))
                {
                        s.remove(str);//异常
//                        s.remove("lili");//正常
                }
        }
}




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