迭代器

迭代器是一个对象,它的工作是遍历并选择序列中的对象。
通过迭代器访问类集的方法:使用iterator(),该方法是一个实现Iterator,或者实现ListIterator接口的对象

Iterator

只能单向移动,可以完成通过循环输出类集内容,从而获得和删除元素

  1. // 容器返回一个Iterator。Iterator将准备好返回序列的第一个元素
  2. Iterator iterator();
  3. // 检查序列中是否还有元素
  4. boolean hasNext();
  5. // 获得序列中的下一个元素。若没有下一个元素,引发NoSuchElementException
  6. Object next();
  7. // 迭代器新近返回的元素删除。如果试图在调用next()方法后调用remove()方法,会引发IllegalStateException
  8. void remove();

ListIterator

ListIterator是一个更加强大的Iterator的子类型,它只能用于各种List类的访问。

ListIterator可以双向移动。它还可以产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引,并且可以使用set()方法替换它访问过的最后一个元素。

  1. ListIterator listIterator(); // 产生一个指向List开始处的ListIterator
  2. ListIterator listIterator(int n); // 创建一个一开始就指向列表索引为n的元素处的ListIterator
  3. void add(Object obj); // 将obj插入列表的一个元素之前,该元素在下次调用next()方法时被返回
  4. boolean hasNext(); // 存在与否下一个元素?true:false
  5. boolean hasPrevious(); // 存在与否前一个元素?true:false
  6. Object next(); // 获得序列中的下一个元素。若没有下一个元素,引发NoSuchElementException
  7. int nextIndex(); // 返回下一个元素的下标,若不存在下一个元素,返回列表大小
  8. Object previous(); // 返回前一个元素,若不存在,引发NoSuchElementException
  9. int previousIndex(); // 返回前一个元素的下标,若不存在,返回-1
  10. void remove(); // 从列表删除当前元素,如果remove()在next()或previous()调用之前被调用,会引发IllegalStateException
  11. void set(Object obj); // 将obj赋值给当前元素。这是上次调用next()或previous()最后返回的元素
  1. 使用迭代方法通过循环输出类集的内容,具体操作步骤如下:
  2. Iterator it = 类集对象.iterator();
  3. while(it.hasNext()){
  4. it.next();
  5. }