java paging util

时间:2012-08-31 11:57:06

标签: java

我有对象列表。我需要做分页 输入参数是每页和页码的最大对象数。

例如输入list = ("a", "b", "c", "d", "e", "f")
每页的最大数量为2 页码是2 结果=(“c”,“d”)

是否有任何现成的类(libs)来执行此操作?例如Apache项目等。

7 个答案:

答案 0 :(得分:19)

int sizePerPage=2;
int page=2;

int from = Math.max(0,page*sizePerPage);
int to = Math.min(list.size(),(page+1)*sizePerPage)

list.subList(from,to)

答案 1 :(得分:19)

使用Java 8流程:

list.stream()
  .skip(page * size)
  .limit(size)
  .collect(Collectors.toCollection(ArrayList::new));

答案 2 :(得分:3)

尝试:

int page    = 1; // starts with 0, so we on the 2nd page
int perPage = 2;

String[] list    = new String[] {"a", "b", "c", "d", "e", "f"};
String[] subList = null;

int size = list.length;
int from = page * perPage;
int to   = (page + 1) * perPage;
    to   = to < size ? to : size;

if ( from < size ) {
    subList = Arrays.copyOfRange(list, from, to);
}

答案 3 :(得分:2)

简单方法

Query::setEncoding()

答案 4 :(得分:1)

试试这个:

int pagesize = 2;
int currentpage = 2;
list.subList(pagesize*(currentpage-1), pagesize*currentpage);

此代码返回仅包含所需元素的列表(页面)。

您还应该检查索引以避免java.lang.IndexOutOfBoundsException。

答案 5 :(得分:0)

根据您的问题,简单List.subList会给您预期的行为     size()/ 2 =页数

答案 6 :(得分:0)

您可以List.subList使用Math.min来防范ArrayIndexOutOfBoundsException

List<String> list = Arrays.asList("a", "b", "c", "d", "e");
int pageSize = 2;
for (int i=0; i < list.size(); i += pageSize) {
    System.out.println(list.subList(i, Math.min(list.size(), i + pageSize)));
}