使用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 }

 參考:http://blog.csdn.net/lululove19870526/article/details/46742515


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM