无涯教程-Java - Iterator 迭代器函数

38 阅读2分钟

通常,您将需要循环浏览集合中的元素,例如,您可能要显示每个元素。最简单的方法是使用迭代器,是实现Iterator或ListIterator接口的对象。

Iterator 方法

Sr.No. Method & Remark
1

boolean hasNext()

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

2

Object next()

返回下一个元素。如果没有下一个元素,则抛出NoSuchElementException。

3

void remove()

删除当前元素。如果尝试在未调用next()的情况下调用remove(),则抛出IllegalStateException。

ListIterator 方法

Sr.No. Method & Remark
1

void add(Object obj)

将obj插入到元素的列表中,该元素将由下次调用next()返回。

2

boolean hasNext()

如果存在下一个元素,则返回true。否则,返回false。

3

boolean hasPrevious()

如果存在上一个元素,则返回true。否则,返回false。

4

Object next()

返回下一个元素。如果没有下一个元素,则抛出NoSuchElementException。

5

int nextIndex()

返回下一个元素的索引。如果没有下一个元素,则返回列表的大小。

6

Object previous()

返回上一个元素。如果没有上一个元素,则抛出NoSuchElementException。

7

int previousIndex()

返回上一个元素的索引。如果没有上一个元素,则返回-1。

8

void remove()

从列表中删除当前元素。如果在调用next()或previous()之前调用remove(),则抛出IllegalStateException。

9

void set(Object obj)

将obj分配给当前元素。这是对next()或previous()的调用最后返回的元素。

Iterator 示例

这里演示Iterator和ListIterator的示例。它使用ArrayList对象,但是一般原则适用于任何类型的集合。

当然,ListIterator仅适用于实现List接口的那些集合。

import java.util.*;
public class IteratorDemo {

public static void main(String args[]) { // 创建数组列表 ArrayList al = new ArrayList();

  </span><span class="com">// 将元素添加到数组列表</span><span class="pln">
  al</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"C"</span><span class="pun">);</span><span class="pln">
  al</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"A"</span><span class="pun">);</span><span class="pln">
  al</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"E"</span><span class="pun">);</span><span class="pln">
  al</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"B"</span><span class="pun">);</span><span class="pln">
  al</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"D"</span><span class="pun">);</span><span class="pln">
  al</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"F"</span><span class="pun">);</span><span class="pln">

  </span><span class="com">// 使用迭代器显示al的内容</span><span class="pln">
  </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"Original contents of al: "</span><span class="pun">);</span><span class="pln">
  </span><span class="typ">Iterator</span><span class="pln"> itr </span><span class="pun">=</span><span class="pln"> al</span><span class="pun">.</span><span class="pln">iterator</span><span class="pun">();</span><span class="pln">
  
  </span><span class="kwd">while</span><span class="pun">(</span><span class="pln">itr</span><span class="pun">.</span><span class="pln">hasNext</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="typ">Object</span><span class="pln"> element </span><span class="pun">=</span><span class="pln"> itr</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">element </span><span class="pun">+</span><span class="pln"> </span><span class="str">" "</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">();</span><span class="pln">
  
  </span><span class="com">// 修改被迭代的对象</span><span class="pln">
  </span><span class="typ">ListIterator</span><span class="pln"> litr </span><span class="pun">=</span><span class="pln"> al</span><span class="pun">.</span><span class="pln">listIterator</span><span class="pun">();</span><span class="pln">
  
  </span><span class="kwd">while</span><span class="pun">(</span><span class="pln">litr</span><span class="pun">.</span><span class="pln">hasNext</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="typ">Object</span><span class="pln"> element </span><span class="pun">=</span><span class="pln"> litr</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span><span class="pln">
     litr</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="pln">element </span><span class="pun">+</span><span class="pln"> </span><span class="str">"+"</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"Modified contents of al: "</span><span class="pun">);</span><span class="pln">
  itr </span><span class="pun">=</span><span class="pln"> al</span><span class="pun">.</span><span class="pln">iterator</span><span class="pun">();</span><span class="pln">
  
  </span><span class="kwd">while</span><span class="pun">(</span><span class="pln">itr</span><span class="pun">.</span><span class="pln">hasNext</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="typ">Object</span><span class="pln"> element </span><span class="pun">=</span><span class="pln"> itr</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">element </span><span class="pun">+</span><span class="pln"> </span><span class="str">" "</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">();</span><span class="pln">

  </span><span class="com">// 现在,向后显示列表</span><span class="pln">
  </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"Modified list backwards: "</span><span class="pun">);</span><span class="pln">
  
  </span><span class="kwd">while</span><span class="pun">(</span><span class="pln">litr</span><span class="pun">.</span><span class="pln">hasPrevious</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="typ">Object</span><span class="pln"> element </span><span class="pun">=</span><span class="pln"> litr</span><span class="pun">.</span><span class="pln">previous</span><span class="pun">();</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">element </span><span class="pun">+</span><span class="pln"> </span><span class="str">" "</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">();</span><span class="pln">

} }

这将产生以下输出-

Original contents of al: C A E B D F
Modified contents of al: C+ A+ E+ B+ D+ F+
Modified list backwards: F+ D+ B+ E+ A+ C+

参考链接

www.learnfk.com/java/java-u…