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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

做了个测试  我感觉迭代器里边应该是有指针或者光标之类的东西
而指针就是.next和.previous。。。
依靠这两个来判断真假
是不是。。。
求大神指导一下。。

6 个回复

倒序浏览
相信楼主也是知道迭代器是用来遍历枚举啊map等里面的内容,说起来迭代器在java中是一个类,本来是抽象的,但是被这样子描叙成类就具体化了。
迭代器其实就是游标(不知道你懂不懂 = =),正如你说话的指针一样。是用来当做一个地址,指向容器中的元素。
至于说.next and .previous是控制迭代器就是游标就是指针向前或向后移动~希望对你有用
回复 使用道具 举报
  1. /*
  2. * @(#)Iterator.java        1.27 06/07/24
  3. *
  4. * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */

  7. package java.util;

  8. /**
  9. * An iterator over a collection.  Iterator takes the place of Enumeration in
  10. * the Java collections framework.  Iterators differ from enumerations in two
  11. * ways: <ul>
  12. *        <li> Iterators allow the caller to remove elements from the
  13. *             underlying collection during the iteration with well-defined
  14. *              semantics.
  15. *        <li> Method names have been improved.
  16. * </ul><p>
  17. *
  18. * This interface is a member of the
  19. * <a href="{@docRoot}/../technotes/guides/collections/index.html">
  20. * Java Collections Framework</a>.
  21. *
  22. * @author  Josh Bloch
  23. * @version 1.27, 07/24/06
  24. * @see Collection
  25. * @see ListIterator
  26. * @see Enumeration
  27. * @since 1.2
  28. */
  29. public interface Iterator<E> {
  30.     /**
  31.      * Returns <tt>true</tt> if the iteration has more elements. (In other
  32.      * words, returns <tt>true</tt> if <tt>next</tt> would return an element
  33.      * rather than throwing an exception.)
  34.      *
  35.      * @return <tt>true</tt> if the iterator has more elements.
  36.      */
  37.     boolean hasNext();

  38.     /**
  39.      * Returns the next element in the iteration.
  40.      *
  41.      * @return the next element in the iteration.
  42.      * @exception NoSuchElementException iteration has no more elements.
  43.      */
  44.     E next();

  45.     /**
  46.      *
  47.      * Removes from the underlying collection the last element returned by the
  48.      * iterator (optional operation).  This method can be called only once per
  49.      * call to <tt>next</tt>.  The behavior of an iterator is unspecified if
  50.      * the underlying collection is modified while the iteration is in
  51.      * progress in any way other than by calling this method.
  52.      *
  53.      * @exception UnsupportedOperationException if the <tt>remove</tt>
  54.      *                  operation is not supported by this Iterator.
  55.      
  56.      * @exception IllegalStateException if the <tt>next</tt> method has not
  57.      *                  yet been called, or the <tt>remove</tt> method has already
  58.      *                  been called after the last call to the <tt>next</tt>
  59.      *                  method.
  60.      */
  61.     void remove();
  62. }
复制代码
回复 使用道具 举报
迭代器的代码是一个内部类  内部类可以直接访问外部类的成员   所以你在new一个容器的时候  需要调用迭代器 然后会new迭代器这个内部类    然后迭代器这个内部类就可以判断外部类这个容器是否有元素啊什么的  自己写一个简单的容器就知道怎么回事了 或者用eclipse看看ArrayList的那些源码
回复 使用道具 举报
Clouddd 发表于 2015-8-6 09:54
相信楼主也是知道迭代器是用来遍历枚举啊map等里面的内容,说起来迭代器在java中是一个类,本来是抽象的, ...

迭代器实质上是一个内部类,每个集合的内部类实现方式不同因此抽取成一个Iteratro借口用来描述
回复 使用道具 举报
wunairensheng95 发表于 2015-8-6 11:04
迭代器的代码是一个内部类  内部类可以直接访问外部类的成员   所以你在new一个容器的时候  需要调用迭代器 ...

对的。。。就是这样的。。。今天又回头看了一遍视频想通了。。
回复 使用道具 举报
morning_ 发表于 2015-8-6 18:45
迭代器实质上是一个内部类,每个集合的内部类实现方式不同因此抽取成一个Iteratro借口用来描述 ...

get! thanks for your answer~~! have a good day guy
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马