返回Iterator而不是Collection

时间:2012-06-13 12:25:40

标签: java collections iterator synchronize iterable

是否有任何优势或返回迭代器更适合数据访问层方法中的集合?

我已经在某个地方看到了,不记得为什么。

P.S:可能与实时提取某些数据有关而不完整

2 个答案:

答案 0 :(得分:2)

Iterator具有比Collection更简单的接口,并且应该更容易实现以您希望的方式执行操作的自定义包装器。

正如您所提到的,您可以实现它,以便next()方法阻塞,直到数据可用。此外,您可以选择不实现remove()操作,因此不允许调用者更改基础集合。

答案 1 :(得分:2)

JDBC ResultSet基本上就是这样,虽然它是一个不同的,更复杂的界面。是的,原因在于它允许处理大量数据集而无需先将它们完全提取到内存中。

此外,其他一些语言(C ++和Python,我相信)惯用地使用迭代器作为要传递的数据项。在Java中,这通常没有完成,应该避免(除非有令人信服的理由),因为Java的迭代器缺少一些重要的功能,使得它们比集合更有用 - 即,你不能复制它们或重置它们的位置。 p>