2012-06-13 356 views
2

有沒有什麼好處,或者返回迭代器更適合數據訪問層方法中的集合?返回迭代器而不是集合

我在某處看過它,不記得爲什麼。

PS:也許有一些數據的實時抓取做的,而不是完成

+0

不知道如何使用迭代器來執行'運行時獲取'。迭代器是可以迭代集合的對象,如果數據不在迭代器沒有看到的集合中。 –

+0

我發現了這樣的鏈接(但它沒有更新,也沒有談論最佳實踐)http://www.techrepublic.com/article/deciding-between-iterators-and-lists-for-returned-values-in-的Java/1046675 – Whimusical

回答

2

一個JDBC ResultSet基本上可以這樣工作,雖然它是一個不同的和更復雜的接口。是的,其原因是它允許處理巨大的數據集,而無需先將它們全部存入內存。另外,一些其他語言(C++和Python,我相信)習慣性地使用迭代器作爲要傳遞的數據項。在Java中,這通常沒有完成,應該避免(除非有令人信服的理由),因爲Java的迭代器缺少一些重要功能,使得它們比集合更有用 - 即無法複製它們或重置它們的位置。

2

迭代器有一個比收藏更簡單的界面,而應該是更容易實現自定義包裝,做事情的方式你想要他們。如上所述,您可以實現它,使next()方法阻塞,直到數據可用爲止。此外,您可以選擇不執行remove()操作,因此不允許調用方更改基礎集合。