所以有Iterable
和Iterator
和List
。如果您试图为其他 Java 代码提供接口(interface),以便封装由返回“页面”结果的远程服务提供的功能,您会使用什么?
例如,考虑一个数据库或网页(例如 flickr API )。在第一次检索结果后,您知道结果的总数和前 N 个结果,但在检索其余结果之前,您不知道剩余的结果。
最佳答案
在您的情况下,鉴于每个元素的检索成本都很高,因此获取聚合结果而不是在删除调用级别直接迭代每个元素可能是有意义的。
您可以提供一种返回列表的方法,如下所示:
List<YourClass> getResults(int offset, int maxResults)
其中 offset 是您要从其开始的第一个元素的索引,而 maxresults 是您希望列表中包含的最大元素数。然后您可以迭代列表以显示在您的页面中。
Java Persistence API 也遵循相同的模式,Query 接口(interface)提供了执行上述操作的 3 个方法:
setFirstResult()
setMaxResults()
List getResultList()
http://download.oracle.com/javaee/5/api/javax/persistence/Query.html
关于java:分页结果的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4542682/