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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 绕世界流浪丶 中级黑马   /  2013-11-14 15:49  /  1279 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 绕世界流浪丶 于 2013-11-14 16:24 编辑

迭代器Iterator取出集合中的元素,然后如果不调用的话,元素是不是就储存在迭代器中了呢?

4 个回复

倒序浏览
元素并没有直接的存储到迭代器,无论你是否调用迭代器都没存储进去。
  迭代器更多的像是一个指针,会依次迭代的指向下个元素,从而让你通过它去操作和遍历每一个元素,但是就如我所说,它只是一个指针一个引用,所以,它内部是没有存储任何元素的,你操作的任然是原本集合
回复 使用道具 举报
FFF 金牌黑马 2013-11-14 16:14:46
藤椅
本帖最后由 FFF 于 2013-11-14 16:17 编辑

应该不是。按照JVM对内存"抠门"的特性。如果你next()完又不赋值的话。就应该是会释放掉。如果你做出了改变,那么改变的就是原数据。而迭代器里的东西用完就丢。而不是存储起来(如果储存也是储存到原数组里)。而且毕老师也说过,迭代器只是一个工具,用完后就没有意义了。一般节省内存的话都是用for语句来使用迭代的。for完成之后。for里面的东西都会被释放的。
  1.         public static void main(String[] args){
  2.                 ArrayList al = new ArrayList();
  3.                 al.add("123");
  4.                 al.add("123");
  5.                 al.add("123");
  6.                 al.add("123");
  7.                
  8.                 for(Iterator i = al.iterator();i.hasNext();){
  9.                         i.next();//没有赋值、没有指向,没有改变。最后会被释放。而不是储存起来
  10.                 }
  11.                 System.out.println("黑马论坛Itrator迭代例子");                        
  12.         }
复制代码
回复 使用道具 举报
FFF 发表于 2013-11-14 16:14
应该不是。按照JVM对内存"抠门"的特性。如果你next()完又不赋值的话。就应该是会释放掉。如果你做出了改变 ...

哦哦!知道了,谢谢。。。
回复 使用道具 举报
文涛 发表于 2013-11-14 16:11
元素并没有直接的存储到迭代器,无论你是否调用迭代器都没存储进去。
  迭代器更多的像是一个指针,会依次 ...

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