如何定义自己的迭代器?

Mat*_*att 3 java iterator

我编写了自己的链表类型数据结构,并希望创建一个Iterator对象,允许我迭代列表中的节点.

是否可以直接定义我自己的迭代器,或者我是否首先需要将其转换为现有的数据结构,LinkedList并调用iterator()它?

Ted*_*opp 6

您可以通过实现Iterator接口的三个方法来定义自己的Iterator类:

boolean hasNext();
E next();
void remove();
Run Code Online (Sandbox Code Playgroud)

最后一个方法是可选的:您可以实现它只是抛出UnsupportedOperationException.

最常见的策略是使实际的类成为列表类的私有成员类.这样它就可以访问你班级的私人簿记数据; 这通常需要实现一个有效的迭代器.

一旦实现了迭代器类,使列表类实现Iterable通常很有帮助.这为客户端代码提供了获取迭代器的方法.