与数据访问层方法中的集合相比,返回迭代器是否有任何优势或在哪里更可取?
我在哪里见过,不记得为什么。
PS:可能与实时获取一些数据有关,而未完成
与数据访问层方法中的集合相比,返回迭代器是否有任何优势或在哪里更可取?
我在哪里见过,不记得为什么。
PS:可能与实时获取一些数据有关,而未完成
Iterator 的接口比 Collection 简单得多,并且应该更容易实现自定义包装器,以按照您想要的方式做事。
正如您所提到的,您可以实现它,以便 next() 方法阻塞,直到数据可用。此外,您可以选择不实现 remove() 操作,因此不允许调用者更改底层集合。
JDBCResultSet
基本上就是这样工作的,尽管它是一个不同且更复杂的接口。是的,这样做的原因是它允许处理巨大的数据集,而无需先将它们完全提取到内存中。
此外,其他一些语言(我相信 C++ 和 Python)习惯性地使用迭代器作为要传递的数据项。在 Java 中,通常不会这样做并且应该避免这样做(除非有令人信服的理由),因为 Java 的迭代器缺少一些重要的功能,这使得它们的用处远不如 Collection —— 即,您不能复制它们或重置它们的位置。