迭代器(lterator)

在第六章我们开发的LinkedList类中,你可能已经想到了从表中取决对象的方法有点麻烦。必须用方法getFirst()检索第一个元素,用另一个方法getNext()依次检索其他元素,这使得检索表中的第一个元素是一个"特殊情况".因此处理元素时必须考虑这种情况。而且比它需要的更复杂一些。

在一个几何中连续地处理元素的更好的达到是使用迭代器(iteratir).

值得注意的一点是Java也提供了枚举器。一个枚举器提供的能力与迭代器基本相同,但Java文档中建议你在几何中应该用迭代器代替枚举器。

通常一个迭代器是一个对象,你可以用它在集合中一个连接一个地检索所有对象。有的人在一叠纸牌中一张接一张地处理纸牌,就像是一个用于纸牌的迭代器--当然不包括洗牌。

在 Java中,一个迭代器是一个由一个集合类实现的接口。任何几何对象可以创建一个Iterator类型的对象,这个对象再按某种次序封装原始几何中所有对象的引用,而且能用Iterator接口方法访问。换句话,一个迭代器提供了一种简便方法能在一个集合中检索所有对象。在Java中使用迭代器的基本方法如下图所示。

迭代器(lterator)

迭代器(lterator)

由于对一个对象调用next()方法会从第一个开始连续地返回集合中的对象,你可以用这个循环很容易的处理集合中所有的元素;

Myclass item                    //storo an object from the collection

while(iter.hasNext())          //check that there's another

{

item=(Myclass)iter.next();    //Retrieve next object

//Do something with item.....

}

这里假设itcr是Iterator类型并且存储一个对象的引用,该对象是从我们使用的任何集合类中获得的,正如我们很快会看到的,集合的对象有一个方法 iterator()集合的当前内容返回个迭代器。只要hasNext()方法返回true循环会继续。由于next()方法返回Object类型的对象,我们需要将它强制转换成实际类型。每当你需要浏览集合中的对象时,你需要获得另一个迭代器,因为一个迭代器是"一次性使明"的对象

只有集或表的Java集合类一肖接使迭代器有效、尽管如此,正如我们看到的,个映像提供使一些键或对象即键/对象对被看作集的方法因此川一以获得迭代器去处理作为集的映像中的对象。

我们在这里石一到的迭代器是单行线-我们可以一次一个地访问一个集介中对象。情况就是这样。对于许多用途而言这样很好而且比手丁编写的循环安全得多,因为不可能发生边界条件错误。尽管如此,如果这还不够,有另一种更灵活的迭代器。

表迭代器

ListIterator接口声明的方法使你可以用于向后或向前遍历一个对象集合、你也不必选择一个特殊的方向。你可以由向前改成向后,反之亦然,因此一个对象可以被检索多次。

ListIterator接日扩展了Iterator接口,因此你以前见到的迭代器方法仍然可以使用。在ListIterator接口中定义的你用于遍历对象的表的方法是:

迭代器(lterator)

你可以通过切换地调用next()和previous()来向后或向前浏览表。调用完next()方法后。立即调用previous()方法将返回同一个元素-反之亦然。

通过一个Listlterator你可以在集合中添加和并换对象,也可以从集合巾删除对象ListIterator声明了下边的方法:

迭代器(lterator)

现在我们了解了迭代器,为了使用集合类,我们必须知道一些有关集合类白身的知识。

原文链接:http://edu.cnzz.cn/8949321b.html

原文地址:https://www.cnblogs.com/zhaofei/p/3408990.html