2

与数据访问层方法中的集合相比,返回迭代器是否有任何优势或在哪里更可取?

我在哪里见过,不记得为什么。

PS:可能与实时获取一些数据有关,而未完成

4

2 回答 2

2

Iterator 的接口比 Collection 简单得多,并且应该更容易实现自定义包装器,以按照您想要的方式做事。

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

于 2012-06-13T12:38:52.860 回答
2

JDBCResultSet基本上就是这样工作的,尽管它是一个不同且更复杂的接口。是的,这样做的原因是它允许处理巨大的数据集,而无需先将它们完全提取到内存中。

此外,其他一些语言(我相信 C++ 和 Python)习惯性地使用迭代器作为要传递的数据项。在 Java 中,通常不会这样做并且应该避免这样做(除非有令人信服的理由),因为 Java 的迭代器缺少一些重要的功能,这使得它们的用处远不如 Collection —— 即,您不能复制它们或重置它们的位置。

于 2012-06-13T12:47:04.917 回答