迭代器接口

        迭代器取代了JCE中的Enumeration(枚举)借口,迭代器允许调用者在迭代期间从迭代器所指向和集合中移除元素,并且借口方法也得到了改进。

        Iterator借口无构造方法,定义时不用new。例如:I是一个集合名,定义为Iterator

 ite=I.Iterator();Iterator接口方法能以迭代方式逐个访问集合中的各个元素,并安全的从Collection中除去适当元素。方法有:boolean hasNext()(判断是否存在另一个可访问的元素,如存在则返回ture);E next()(返回要访问的下一个元素,如果达到集合结尾则抛出异常NosuchElementException);void remove()(删除上次访问返回的对象。本方法必须紧跟一个元素的访问后执行)。如果上次访问集合已被修改,将抛出IllegalStateException).对Iterator的删除操作会影响底层Collection。同时它的输入与输出的顺序不一定一样,跟set类似。

      ListIterator接口继承Iterator接口,是列表迭代器,多了添加、更改的功能,允许程序员双向访问、修改列表。他没有当前位置,光标位于调用previous和next方法返回的值之间。是一个长度为n的列表,有n+1个有效索引值。其常用方法及使用说明:void add(E o)(将归想添加到当前位置的前面);void set(E o)(用对象o替代next或previous方法访问的上一个元素);boolean hasPrevious()(判断向后迭代时是否有元素可访问);E previous()(放回上一个对象);int nextIndext()(返回下次调用next方法时将返回的元素的索引);int previousIndext()(返回下次调用previous方法时将返回的元素的索引);

      还要注意:可通过Collection接口的iterator方法获取当前集合的Iterator操作对象。在输出时,有for-each跟迭代器差不多,但要注意他们之间的细微差别,这里就不说不出来,忘了^-^。

你可能感兴趣的:(迭代器)