使用java.util.List的subList方法进行分页

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 }

猜你喜欢

转载自blog.csdn.net/m0_37450089/article/details/80062998