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为每页数据的个数,然后从第一页开始依次输出每页的数据直至输出完。
1 import java.util.ArrayList; 2 import java.util.List; 3 4 /** 5 * 6 */ 7 public class ListPaging { 8 9 public static List<List<Integer>> paging(List<Integer> list, int pageSize) { 10 int totalCount = list.size(); 11 int pageCount; 12 int m = totalCount % pageSize; 13 14 if (m > 0) { 15 pageCount = totalCount / pageSize + 1; 16 } else { 17 pageCount = totalCount / pageSize; 18 } 19 20 List<List<Integer>> totalList = new ArrayList<List<Integer>>(); 21 for (int i = 1; i <= pageCount; i++) { 22 if (m == 0) { 23 List<Integer> subList = list.subList((i - 1) * pageSize, pageSize * (i)); 24 totalList.add(subList); 25 } else { 26 if (i == pageCount) { 27 List<Integer> subList = list.subList((i - 1) * pageSize, totalCount); 28 totalList.add(subList); 29 } else { 30 List<Integer> subList = list.subList((i - 1) * pageSize, pageSize * i); 31 totalList.add(subList); 32 } 33 } 34 } 35 36 return totalList; 37 } 38 39 public static void main(String[] args) { 40 List<Integer> list = new ArrayList<Integer>(); 41 for (int i = 1; i < 52; i++) { 42 list.add(i); 43 } 44 45 List<List<Integer>> totalList = paging(list, 10); 46 System.out.println(totalList); 47 } 48 }
参考:http://blog.csdn.net/lululove19870526/article/details/46742515