java.util.List中有一个subList方法,用来返回一个list的一部分视图。
List<E> subList(int fromIndex, int toIndex);
它返回原来list的从[fromIndex, toIndex)之间这一部分的视图,之所以说是视图,是因为实际上,返回的list是靠原来的list支持的。返回一个以fromIndex为起始索引(包含),以toIndex为终止索引(不包含)的子列表。
但值得注意的是,返回的这个子列表的幕后其实还是原列表;也就是说,修改这个子列表,将导致原列表也发生改变;反之亦然。
比如集合中的内容为1,2,3,4,5
list.sublist(2,4)
就返回一个子集合:它的内容包括从下标为2到下标为4,而且这是左闭右开的,就是说是从大于等于2到小于4,那子集内容就是3,4(集合的下标都是从0开始)。
把list进行分页,其中pageSize为每页数据的个数,然后从第一页开始依次输出每页的数据直至输出完。
import java.util.ArrayList;
import java.util.List; /**
*
*/
public class ListPaging { public static List<List<Integer>> paging(List<Integer> list, int pageSize) {
int totalCount = list.size();
int pageCount;
int m = totalCount % pageSize; if (m > 0) {
pageCount = totalCount / pageSize + 1;
} else {
pageCount = totalCount / pageSize;
} List<List<Integer>> totalList = new ArrayList<List<Integer>>();
for (int i = 1; i <= pageCount; i++) {
if (m == 0) {
List<Integer> subList = list.subList((i - 1) * pageSize, pageSize * (i));
totalList.add(subList);
} else {
if (i == pageCount) {
List<Integer> subList = list.subList((i - 1) * pageSize, totalCount);
totalList.add(subList);
} else {
List<Integer> subList = list.subList((i - 1) * pageSize, pageSize * i);
totalList.add(subList);
}
}
} return totalList;
} public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 1; i < 52; i++) {
list.add(i);
} List<List<Integer>> totalList = paging(list, 10);
System.out.println(totalList);
}
}
参考:http://blog.csdn.net/lululove19870526/article/details/46742515