通常,您将需要循环浏览集合中的元素,例如,您可能要显示每个元素。最简单的方法是使用迭代器,是实现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+