オブジェクトのリストがあります。ページネーションを行う必要があります。
入力パラメータは、ページごとのオブジェクトの最大数とページ番号です。
入力例list = ("a", "b", "c", "d", "e", "f")
1 ページあたりの最大数は 2 ページ数は 2 Result = ("c", "d")
これを行うための既製のクラス(ライブラリ)はありますか? たとえば、Apache プロジェクトなど。
オブジェクトのリストがあります。ページネーションを行う必要があります。
入力パラメータは、ページごとのオブジェクトの最大数とページ番号です。
入力例list = ("a", "b", "c", "d", "e", "f")
1 ページあたりの最大数は 2 ページ数は 2 Result = ("c", "d")
これを行うための既製のクラス(ライブラリ)はありますか? たとえば、Apache プロジェクトなど。
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)
試してみてください:
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);
}
これを試して:
int pagesize = 2;
int currentpage = 2;
list.subList(pagesize*(currentpage-1), pagesize*currentpage);
このコードは、必要な要素 (ページ) のみを含むリストを返します。
java.lang.IndexOutOfBoundsException を回避するために、インデックスもチェックする必要があります。
あなたの質問によると、単純List.subList
に予想される動作が得られます size()/ 2= ページ数
List.subList
usingを使用して、次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)));
}