黑马程序员技术交流社区
标题:
迭代器为什么可以修改引用类型Collection对象的值?
[打印本页]
作者:
高顺德
时间:
2013-3-24 17:23
标题:
迭代器为什么可以修改引用类型Collection对象的值?
本帖最后由 天下 于 2013-3-26 15:55 编辑
查看帮助文档才发现:“
迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。
”,我认为这句话说的意思是:允许迭代期间移除Collection的某些元素。大家应该知道引用类型的改变通常是再创建一个存储空间存储新的值,然后把这个新地址给以前的变量。而这里说“移除”,我不知道它是又创建了一个存储空间把符合条件的数据放进去然后把地址给我,还是怎么的,迭代器是怎么修改引用类型Collection对象的值的?
作者:
罗海清
时间:
2013-3-24 22:20
我也不懂这个,
不过记得用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]
作者:
高顺德
时间:
2013-3-24 22:29
罗海清 发表于 2013-3-24 22:20
我也不懂这个,
不过记得用Iterator迭代只能获取,而不能修改。
谢谢了
作者:
聂益飞
时间:
2013-3-24 22:44
Iterator是不可以增删改的,只能迭代,也就是查!!ListIterator才能进行其他的操作,他是由基本迭代器衍生来的!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2