1. 程式人生 > >使用java.util.List的subList方法進行分頁

使用java.util.List的subList方法進行分頁

util 數據 size 等於 from 修改 system 導致 lov

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

使用java.util.List的subList方法進行分頁