1-1、java.util.Iterator java.util.ListIterator

来源:互联网 发布:淘宝卖家如何开通村淘 编辑:程序博客网 时间:2024/05/13 07:05
1、Iterator
package java.util;

public interface Iterator<E> {
  boolean hasNext();
  E next();
  void remove();
}

说明:
对 collection 进行迭代的迭代器。取代了 Java Collections Framework 中的 Enumeration。
迭代器与枚举有两点不同:
迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。
方法名称得到了改进。
  E next():NoSuchElementException - 没有元素可以迭代。
  void remove();
UnsupportedOperationException - 如果迭代器不支持 remove 操作。
IllegalStateException - 如果尚未调用 next 方法,或者在上一次调用 next 方法之后已经调用了 remove 方法。

2、ListIterator
package java.util;

public interface ListIterator<E> extends Iterator<E> {
  boolean hasNext();
  E next();
  boolean hasPrevious();
  E previous();
  int nextIndex();
  int previousIndex();
  void remove();
  void set(E e);
  void add(E e);
}
说明:
列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。
ListIterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。
长度为 n 的列表的迭代器有 n+1 个可能的指针位置
remove() 和 set(Object) 方法不是 根据光标位置定义的;它们是根据对调用 next() 或 previous() 所返回的最后一个元素的操作定义的。

void set(E e):
用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)
只有在最后一次调用 next 或 previous 后既没有调用 ListIterator.remove 也没有调用 ListIterator.add 时才可以进行该调用。
抛出:
UnsupportedOperationException - 如果列表迭代器不支持 set 操作。
ClassCastException - 如果指定元素的类不允许该元素添加到此列表。
IllegalArgumentException - 如果指定元素的某个方面不允许该元素添加到此列表。
IllegalStateException - 如果既没有调用 next 也没有调用 previous,或者在最后一次调用 next 或 previous 后调用了 remove 或 add。

void add(E e):
将指定的元素插入列表(可选操作)。
该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有);
如果列表没有元素,那么新元素就成为列表中的唯一元素。
新元素被插入到隐式光标前:不影响对 next 的后续调用,并且对 previous 的后续调用会返回此新元素(此调用把调用 nextIndex 或 previousIndex 所返回的值增加 1)。
抛出:
UnsupportedOperationException - 如果列表迭代器不支持 add 操作。
ClassCastException - 如果指定元素的类不允许该元素添加到此列表。
IllegalArgumentException - 如果此元素的某个方面不允许该元素添加到此列表。

总结:
ListIterator接口继承自Iterator接口

Iterator只包含部分查询和删除方法
ListIterator包含增删查改的方法

Iterator单向列表
ListIterator双向列表
0 0
原创粉丝点击