从我所了解的情况来看,两者都用于返回不可修改的对象,但为什么会使用另一个呢?返回一个Iterator和一个不可修改的列表有什么区别?
编辑:我的错误,迭代器不是不可修改的。但我仍然不清楚为什么可以使用迭代器而不是List。
从我所了解的情况来看,两者都用于返回不可修改的对象,但为什么会使用另一个呢?返回一个Iterator和一个不可修改的列表有什么区别?
编辑:我的错误,迭代器不是不可修改的。但我仍然不清楚为什么可以使用迭代器而不是List。
当您需要列表时,返回List
;当需要迭代器时返回Iterator
。它们是完全不同的数据结构,用于不同的目的。
另外,Iterator
也许能够通过remove()
方法(它将删除next()
返回的最后一个项目)修改基础集合。
编辑(回复OP的编辑):如果您特别想阻止客户端代码查看底层列表,或想要强制按顺序访问元素,则需要返回Iterator
。还需要您编写一个iterator()
方法,当您的类实现Iterable
时返回Iterator
。还有一个有趣的情况是返回一个Iterator
,它迭代了一个未确定的项目集合,这些项目在请求之前可能甚至不存在于内存中。 (例如,考虑在基于AI的应用程序中进行状态空间搜索。)
你能解释列表和迭代器之间的区别吗? – chrylis
您可以通过比较['Iterator'](https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html)和['List'](https:// docs.oracle.com/javase/8/docs/api/java/util/List.html)接口。 – shmosel
迭代器不是不可修改的,每次调用next()时,您都可以得到不同的结果,并且最终在结束时可能会失败。 –