码迷,mamicode.com
首页 > 编程语言 > 详细

java迭代器

时间:2014-11-16 21:29:18      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   os   sp   java   div   

  java迭代器Iterator用于依次访问集合中的元素,用于替代Enumeration。

  Iterator接口方法如下所示:

 1 public interface Iterator<E> {
 2      boolean hasNext() ;
 3        //   如果仍有元素可以迭代,则返回 true。 
 4  E next() ;
 5          // 返回迭代的下一个元素。 
 6  void remove() ;
 7          // 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 
 8 
 9 }
10   

  通过反复调用next方法,可以逐个访问集合中的每个元素,但是,如果到达了集合的末尾,next方法将抛出一个NoSuchElementException异常,因此,在调用next方法之前要调用hasNext方法,如果迭代器对象还有多个共访问的对象,返回true。

  例如:

1 Iterator it=collection.iterator();
2 while(it.hasNext()){
3     Object obj=it.next();
4 }

  集合元素被访问的顺序取决于集合类型。如果对ArrayList进行迭代,迭代器将从索引0开始,每迭代一次索引值加1;访问HashSet中的元素,元素会按照某种随机的顺序出现。

  java迭代器当前位置被认为是在两个元素之间,当调用next时,迭代器就越过下一个元素,并返回刚刚越过的那个元素的引用。查找操作与索引位置变更紧密相连,查找一个元素的唯一方法是next,在迭代器执行查找操作时,迭代器位置向前移动。

  Iterator接口的remove方法将删除上次调用next方法时返回的元素。remove方法与next方法相互依赖,如果调用remove方法之前没有调用next方法,将抛出IllegalStateException异常。

  Iterator有一个子接口ListIterator,用于访问有序集合如:LinkedList。

  ListIterator方法如下所示:

 1 public interface ListIterator<E> extends Iterator<E> {
 2      void add(E e) ;
 3            //   将指定的元素插入列表(可选操作)。 
 4      boolean hasNext() ;
 5              // 以正向遍历列表时,如果列表迭代器有多个元素,则返回     true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。 
 6      boolean hasPrevious() ;
 7             //  如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。 
 8      E next() ;
 9              // 返回列表中的下一个元素。 
10      int nextIndex() ;
11             //  返回对 next 的后续调用所返回元素的索引。 
12      E previous() ;
13                //   返回列表中的前一个元素。 
14      int previousIndex() ;
15           //    返回对 previous 的后续调用所返回元素的索引。 
16      void remove() ;
17             //  从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。 
18  void set(E e) ;
19       //    用指定元素替换 next 或 previous 返回的最后一个元素(可选    操作)。 
20 }    

  ListIterator接口可以前后遍历集合中的元素,并可以添加,删除元素。当添加元素时,元素添加到当前迭代器位置之前。删除元素与next,previous紧密关联,调用remove方法之前,必须先调用next或previous方法。

  

 

java迭代器

标签:style   blog   io   color   ar   os   sp   java   div   

原文地址:http://www.cnblogs.com/annshe/p/4101882.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!