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

© pizhihui 中级黑马   /  2015-6-13 20:31  /  298 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在学集合的时候,我们可以使用迭代器去遍历集合,即访问集合中所有的元素,但是使用增强for循环也可以实现集合的遍历功能,我们探究一下这个增强for,总的来说:增强for循环内部也是使用迭代器实现的,但是他是怎么实现的了,这里我们举Collection的例子来看看源码是怎么告诉我们的。
先是Collection的部分源代码
  1. //Collection 层次结构 中的根接口
  2. public interface Collection<E> extends Iterable<E> {
  3.        
  4.         int size();
  5.        
  6.         boolean isEmpty();
  7.        
  8.         boolean contains(Object o);
  9.        
  10.         Iterator<E> iterator();//返回在此 collection 的元素上进行迭代的迭代器
  11.        
  12.         Object[] toArray();
  13.        
  14.        
  15.          boolean add(E e);
  16.          
  17.          boolean remove(Object o);
  18.          
  19.          boolean containsAll(Collection<?> c);
  20.          
  21.          void clear();
  22.          
  23.          boolean equals(Object o);
  24.          
  25.          int hashCode();

  26. }
复制代码

这里我们可以看出Collection接口继承了Iterable,接着我们跟踪Iterable,源代码如下

  1. public interface Iterable<T> {。

  2.         Iterator<T> iterator();//返回一个在一组 T 类型的元素上进行迭代的迭代器。

  3. }
复制代码

发现里面什么都没有,只有一个Iterator类型的iterator的方法,我们查看API文档,可以看到这个Iterable的描述是:实现这个接口允许对象成为 "foreach" 语句的目标。这里我们可以看出,增强for循环在这里Java帮我们实现了,接着我们可以看看Iterator类的代码。
  1. //对 collection 进行迭代的迭代器。
  2. public interface Iterator<E> {

  3.         boolean hasNext();//如果仍有元素可以迭代,则返回 true
  4.        
  5.         E next();//返回迭代的下一个元素。
  6.        
  7.         void remove();//从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

  8. }
复制代码

这里我们就可以看出迭代器使用的一些方法了。
最终我们知道了增强for循环在Iterable类中,Java底层帮我们实现了增强for循环的底层功能。

1 个回复

倒序浏览
学习了~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马