java迭代器

  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方法。

  

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值