java:分页结果的设计模式

标签 java design-patterns iterable

所以有IterableIteratorList。如果您试图为其他 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/

相关文章:

java - 过滤泛型类型列表

java - 使用 Java 8 JDK 将 Iterable 转换为 Stream

java - 如何使用Kumo Java词云?

java - Try、catch 和异常处理

design-patterns - 学习设计模式的学生的实践任务

algorithm - 用适当的设计替换特定顺序的 if/else(基于规则/优先级的 if/else)

java - 在类似代码中进行小的实现更改的静态策略或枚举?

java - java中泛型类型的子类型

java - 代码的性能问题,指数工作

java - 反向迭代器 - 用于 reduceRight 功能