Iterator it = al.iterator();(接口型引用指向自己的子类对象,此对象不是new出来的,而是通过集合的方法iterator()获取到的,该方法返回在此collection的元素上进行迭代的迭代器。)
//获取迭代器,用于取出集合中的元素
while(it.hasNext())
{
sop(it.next());
}
为了方便直接访问集合中的元素,取出方式就被定义成了内部类,而由于每种容器的数据结构不同,所以取出动作的细节也会有所区别,但他们都有一些共性的东西,所以就将他们向上进行抽取,形成一个规则,该规则就是Iterator接口,并且此接口对外提供了一个方法----iterator();通过该方法可以获取集合的取出对象。
取出集合中的元素也可以这样书写:
for(Iterator it = new Iterator();it.hasNext();)
{
sop(it.next());
}
it作为局部变量,循环结束后,从内存中释放了,比while循环要严谨一些。
list集合特有迭代器:
在迭代过程中,不可以使用集合的方法操作集合中的元素,否则会发生并发修改异常,所以在迭代时,只能用迭代器的方法,而Iterator方法有限,只能做判断、取出和删除操作,如需要对集合中的元素进行其他操作如添加修改等,就需要用ListIterator,它是List集合特有的迭代器(因为List集合中的元素都带角标),ListIterator是Iterator的子接口,其对象通过如下方法来获取:
ListIterator li = al.ListIterator();
|