当前位置: 移动技术网 > IT编程>开发语言>Java > java 迭代器Iterator

java 迭代器Iterator

2019年04月18日  | 移动技术网IT编程  | 我要评论

叶开赶牛,晋城五个人出名了,臂力紧

迭代器(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技术干货!

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

 

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网