欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java 迭代器Iterator

程序员文章站 2022-06-25 15:50:20
迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而不必暴露该对象内部细节的方法。通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。 由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。 ......

迭代器(iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而不必暴露该对象内部细节的方法。通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。

由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。

iterator接口也是java集合框架的成员,但它与collection系列、map系列的集合不一样:collection和map一系列集合主要用于存储其它对象,而iterator主要用于遍历(迭代访问)collection集合中的元素。

iterator接口里定义了如下4个方法:

1)boolean hasnext():如果被迭代的集合元素还没有被遍历完,则返回true。

2)object next():返回集合里的下一个元素。

3)void remove():删除集合里上一次next方法返回的元素。

4)void foreachremaining(consumer action),这是java8为iterator新增的默认方法,该方法可使用lambda表达式来遍历集合元素。

下面程序示范了通过iterator接口来遍历集合元素。

public class iteratortest{
  public static void main(string[] args){
    list<string> strlist = new arraylist<>();
    strlist.add("111");
    strlist.add("222");
    strlist.add("333");
    iterator it = strlist.iterator();
    while(it.hasnext()){
      string str = (string)it.next();
      sysye.out.println(str);
      if(str.equals("222")){
        it.remove();
      }
      //对str赋值,不会改变集合本身
      str = "000";
    }
  }
}

当使用iterator迭代访问collection集合元素时,collection集合里的元素不能被改变,只有通过iterator 的remove()方法删除上一次next()方法返回的集合元素才可以;否则将会引发java.util.concurrentmodificationexception异常。

 

欢迎关注微信公众号【java典籍】,收看更多java技术干货!

  ▼微信扫一扫下图↓↓↓二维码关注

 java 迭代器Iterator

引申:iterator 与listiterator 有何区别?
iterator 只能正向遍历集合,适用于获取移除元素。listiterator 继承自iterator ,专门针对list,可以从两个方向来遍历list,同时支持元素的修改。