zoukankan      html  css  js  c++  java
  • Java学习之集合框架的迭代器--Iteratorjk及ListItertor接口

      通常情况下,你会希望遍历一个集合中的元素。例如,显示集合中的每个元素。一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象,实现了Iterator 接口或ListIterator接口。迭代器,使你能够通过循环来得到或删除集合的元素。ListIterator 继承了Iterator,以允许双向遍历列表和修改元素。Iterator和ListIterator都是泛型接口,它们的 声明:

      interface  Iterator<E>

      interface  ListIterator<E>

    Iterator接口声明的方法
    default  void forEachRemaining(Consumer<? super E> action)

    对于集合中每个未处理的元素,执行action指定的动作(JDK8新增)

    boolean  hasNext()

    如果还有更多元素,就返回true,否则返回false 

    E  next() 返回下一个元素。如果不存在下一个元素,就抛出NoSuchElementException异常
    default  void  remove() 移除当前元素。如果在调用next()方法之前试图调用remove(),会抛出异常
    ListIterator接口声明的方法
    方法 描述
    void  add(E  obj) 将obj插入到列表中,新插入的元素位于下一次next()方法调用返回的元素之前
    boolean  hasNext() 如果存在下一个元素就返回true,否则就返回false
    boolean  hasPrevious() 如果存在前一个元素,就返回true,否则返回false
    E next() 返回下一个元素。如果不存在下一个元素,就抛出NoSuchElementException异常
    int  nextIndex() 返回下一个元素的索引。如果不存在下一个元素,就返回列表的大小
    E  previous() 返回前一个元素。如果不存在前一个元素,就抛出NoSuchElementException异常
    int  previousIndex() 返回前一个元素的索引。如果不存在前一个元素,就返回  -1
    void  remove() 从列表中移除当前元素。如果在调用next()或previous()方法之前调用remove()方法,就会抛出IllegalStateException 异常
    void  set(E  obj) 将obj的值赋给当前元素,也就是next()或previous()方法调用最后返回的元素

    只有实现List接口的集合才能使用 ListIterator。

    迭代器的next()方法每调用一次,指示元素的游标就会移动一个位置,若连续调用两次就会跳过两个元素,造成数据的丢失。若想倒序输出数据,也需要将游标移动到末尾,否则不能完整的倒序输出:

  • 相关阅读:
    XML基础总结
    异常处理
    集合总结
    事件源与监听器
    JAVA中的GUI---swing 和awt
    docker搭建wordpress
    Jenkins--第四关_扩展
    docker 安装centos 7
    Jenkins_第五关_系统管理(1)
    Jenkins--第三关_Gitlab安装和配置(续)
  • 原文地址:https://www.cnblogs.com/sdlzspl/p/7255661.html
Copyright © 2011-2022 走看看