14

オブジェクトのリストがあります。ページネーションを行う必要があります。
入力パラメータは、ページごとのオブジェクトの最大数とページ番号です。

入力例list = ("a", "b", "c", "d", "e", "f")
1 ページあたりの最大数は 2 ページ数は 2 Result = ("c", "d")

これを行うための既製のクラス(ライブラリ)はありますか? たとえば、Apache プロジェクトなど。

4

8 に答える 8

23
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)
于 2012-08-31T12:03:07.467 に答える
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);
}
于 2012-08-31T12:02:32.837 に答える
1

これを試して:

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

このコードは、必要な要素 (ページ) のみを含むリストを返します。

java.lang.IndexOutOfBoundsException を回避するために、インデックスもチェックする必要があります。

于 2012-08-31T12:15:38.820 に答える
0

あなたの質問によると、単純List.subListに予想される動作が得られます size()/ 2= ページ数

于 2012-08-31T12:02:38.327 に答える
0

List.subListusingを使用して、次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)));
}
于 2012-08-31T12:07:17.720 に答える