黑马程序员技术交流社区

标题: 迭代器取集合元素测试 [打印本页]

作者: itheima_llt    时间: 2015-4-12 23:43
标题: 迭代器取集合元素测试
本帖最后由 itheima_llt 于 2015-4-12 23:47 编辑

迭代器Iterator测试

查阅API,得到迭代器的基本常识:
对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同:

迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。
方法名称得到了改进。

那么究竟什么是迭代器呢??
迭代器简单的说就是集合元素的取出方式。
而集合框架就把取出方式定义在集合的内部,
这样取出方式就可以直接访问集合内容的元素。
这样取出方式就被定义成了内部类,
而每一个容器的数据结构各不相同,
所以取出的动作细节也不一样,
但是都有共性内容:判断和取出。
那么就可以将这些共性抽取出来。

那么这些内部类都符合一个规则,该规则就是Iterator。
如何获取集合的取出对象呢??
集合提供了一个对外的方法:iterator();

上面的分析可以通过下面这张图来形象的说明。

在前面的例子中我们是通过System.out.println(al);直接打印集合的。
而这种方法的局限非常大,例如在实际开发中并不是要打印集合,更多的是取出集合中的元素并对之进行操作,
用迭代器就可以解决这些局限性。
下面我们通过迭代器取出集合中的元素,并打印出来。
  1. import java.util.*;
  2. class IteratorDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 //创建集合
  7.                 ArrayList al = new ArrayList();
  8.                
  9.                 //集合添加元素
  10.                 al.add("number001");
  11.                 al.add("number002");
  12.                 al.add("number003");
  13.                 al.add("number004");

  14.                 //通过迭代器取出元素,方式1
  15.                 Iterator it = al.iterator();

  16.                 while(it.hasNext())
  17.                         System.out.println(it.next());

  18.                 //通过迭代器取出元素,方式2
  19.                 for(Iterator it2 = al.iterator();it2.hasNext(); )
  20.                         System.out.println(it2.next());

  21.                
  22.         }
  23. }
复制代码

                //通过迭代器取出元素,方式1
                Iterator it = al.iterator();

                while(it.hasNext())
                        System.out.println(it.next());

                //通过迭代器取出元素,方式2
                for(Iterator it2 = al.iterator();it2.hasNext(); )
                        System.out.println(it2.next());
在开发中建议使用方式2,因为更加优化内存


迭代器取集合元素测试结果.jpg (96.7 KB, 下载次数: 1)

迭代器取集合元素测试结果.jpg

迭代器内部实现.jpg (1000.83 KB, 下载次数: 2)

迭代器内部实现.jpg





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