遍历Collection的两种方式:
① 使用迭代器Iterator
② foreach循环(或增强for循环)

Iterator接口

Iterator实现了集合类的遍历,Collection其定义了接口,我们通过调用其子类的Iterator方法即可,具体集合内部的遍历是如何实现的,由该集合自己定义

集合对象每次调用 iterator() 方法都得到一个全新的送代器对象,仅仅用于遍历

Iterator接口定义了如下方法:

  • boolean hasNext( ); //判断游标下个位置是否有元素
  • object next( ) //返回游标下边的元素并将游标移动到下一个位置
  • void remove( )://删除游标上面的元素,执行完next之后remove操作只能执行一次

循环:

  1. iterator = collection.iterator();
  2. while (iterator.hasNext()){
  3. System.out.println(iterator.next());
  4. }
  5. // 第二种写法:
  6. //for(集合元素的类型 局部变量 : 集合对象)
  7. for (Object obj : collection){
  8. System.out.println(obj);
  9. }


Iterator的局限性:

不可在遍历的过程中使用集合对象中的方法操作集合,因为会发生并发修改异常。
要实现只能使用迭代器中定义的方法,如Iterator. remove()

解决方法:
List集合可以使用ListIterator方法获取Iterator的子接口,其支持遍历时集合操作。
Iterator接口 - 图1

  • 它允许列表反向或逆向迭代,同时还可以对迭代对象进行修改。