在Java编程中,集合时使用非常频繁的数据类型,而在遍历集合中所有元素时,Java推荐使用迭代器模式,Java中内部定义了一个接口Iterator来实现简单的迭代操作。
Iterator接口中定义了三个方法:
hasNext():检查集合中是否还有元素,如果有则返回true
next():返回集合中的下一个元素
remove():删除集合中最后一个返回的元素
使用Iterator的注意事项:
- 在获取集合中下一个元素之前一定要先使用hasNext()进行判断集合中是否还有元素,否则则可能会抛出NoSuchElementException
- 使用next()方法返回的元素是从集合中随机取出的,同一代码在多次运行时所取出的元素顺序可能不同
- 使用remove()方法之前必须先调用next()方法,因为删除的是最后一个返回的元素。若没有返回过元素,则没有删除的对象
- 在需要使用多次迭代输出同一集合中元素时,在输出前都需要重新移动迭代器的首指向
例:
package dg; import java.util.*; public class CollectionTest{ public static void main(String[] args){ Collection<String> c = new HashSet<String>(); c.add("AAAAAAAAAAA"); c.add("BBBBBBBBBBB"); c.add("CCCCCCCCCCC"); Iterator i = c.iterator();//Iterator使用方法1:while循环 while(i.hasNext()){ System.out.println(i.next());//迭代输出 } System.out.println("集合中元素个数为:" + c.size()); System.out.println("----------------------------"); i = c.iterator();//上面代码执行后,iterator已指向末尾,此语句将i指向c的开头 if(i.hasNext()){//判断是否有下一个数 System.out.println(i.next()); i.remove(); } System.out.println("----------------------------"); for(Iterator it = c.iterator();it.hasNext();){//Iterator使用方法2:for循环 System.out.println(it.next()); } System.out.println("使用remove()后集合中元素个数为:" + c.size()); } }
代码运行结果:
BBBBBBBBBBB
CCCCCCCCCCC
AAAAAAAAAAA
集合中元素个数为:3
----------------------------
BBBBBBBBBBB
----------------------------
CCCCCCCCCCC
AAAAAAAAAAA
使用remove()后集合中元素个数为:2