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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 天下 于 2013-3-26 15:55 编辑

查看帮助文档才发现:“
迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。
”,我认为这句话说的意思是:允许迭代期间移除Collection的某些元素。大家应该知道引用类型的改变通常是再创建一个存储空间存储新的值,然后把这个新地址给以前的变量。而这里说“移除”,我不知道它是又创建了一个存储空间把符合条件的数据放进去然后把地址给我,还是怎么的,迭代器是怎么修改引用类型Collection对象的值的?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-25 07:01

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

3 个回复

正序浏览
Iterator是不可以增删改的,只能迭代,也就是查!!ListIterator才能进行其他的操作,他是由基本迭代器衍生来的!!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
罗海清 发表于 2013-3-24 22:20
我也不懂这个,
不过记得用Iterator迭代只能获取,而不能修改。

谢谢了
回复 使用道具 举报
我也不懂这个,
不过记得用Iterator迭代只能获取,而不能修改。

想在迭代的过程中,要修改就只能用ListIterator,以下就是代码实现。

import java.util.*;

class Demo
{
        public static void main(String[] args)
        {
                List list = new ArrayList();
                list.add("aaa");
                list.add("bbb");
                list.add("ccc");
                System.out.println(list);
               
                ListIterator it = list.listIterator();
                while(it.hasNext())
                {
                        //System.out.println(it.next());
                        it.next();                //这句一定要有,不然,不知道啥原因会报错,内存溢出
                        it.add("kkk");        //在迭代的过程中,对list进行添加
                }
                System.out.println(list);
        }
}
运行结果是:[aaa, bbb, ccc]
                        [aaa, kkk, bbb, kkk, ccc, kkk]       

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马