黑马程序员技术交流社区

标题: 迭代器的含义 [打印本页]

作者: 绕世界流浪丶    时间: 2013-11-14 15:49
标题: 迭代器的含义
本帖最后由 绕世界流浪丶 于 2013-11-14 16:24 编辑

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

作者: 文涛    时间: 2013-11-14 16:11
元素并没有直接的存储到迭代器,无论你是否调用迭代器都没存储进去。
  迭代器更多的像是一个指针,会依次迭代的指向下个元素,从而让你通过它去操作和遍历每一个元素,但是就如我所说,它只是一个指针一个引用,所以,它内部是没有存储任何元素的,你操作的任然是原本集合
作者: FFF    时间: 2013-11-14 16:14
本帖最后由 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.         }
复制代码

作者: 绕世界流浪丶    时间: 2013-11-14 16:24
FFF 发表于 2013-11-14 16:14
应该不是。按照JVM对内存"抠门"的特性。如果你next()完又不赋值的话。就应该是会释放掉。如果你做出了改变 ...

哦哦!知道了,谢谢。。。
作者: 绕世界流浪丶    时间: 2013-11-14 16:24
文涛 发表于 2013-11-14 16:11
元素并没有直接的存储到迭代器,无论你是否调用迭代器都没存储进去。
  迭代器更多的像是一个指针,会依次 ...

恩恩。谢谢!!!




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