Java 將List按照指定大小分段
阿新 • • 發佈:2019-01-01
有的時候,如果我們需要將現有的List按照指定的大小(size)分成段到新的newList中,newList中的每個元素都是一個原有的List,原有的List中包含size個元素,見如下程式碼:
Ruby程式碼
Ruby程式碼
- public class ListUtils {
- /**
- * 分割List
- * @author bianrx
- * @date 2012.1.13
- * @param list 待分割的list
- * @param pageSize 每段list的大小
- * @return List<<List<T>>
- */
- public static <T> List<List<T>> splitList(List<T> list, int pageSize) {
- int listSize=list.size(); //list的大小
- int page = (listSize + (pageSize-1))/ pageSize; //頁數
- //建立list陣列 ,用來儲存分割後的list
- List<List<T>> listArray = new ArrayList<List<T>>();
- for(int i=0;i<page;i++) { //按照陣列大小遍歷
- List<T> subList = new ArrayList<T>();//陣列每一位放入一個分割後的list
- for(int j=0;j<listSize;j++) { //遍歷待分割的list
- //當前記錄的頁碼(第幾頁)
- int pageIndex = ( (j + 1) + (pageSize-1) ) / pageSize;
- if(pageIndex == (i + 1)) { //當前記錄的頁碼等於要放入的頁碼時
- subList.add(list.get(j));
- list(subList); //放入list中的元素到分割後的
- }
- if( (j + 1) == ((j + 1) * pageSize) ){ //當放滿一頁時退出當前迴圈
- break;
- }
- }
- listArray.add(subList); //將分割後的list放入對應的陣列的位中
- }
- return listArray;
- }
- public static void main(String
- List<String> strlist = new ArrayList<String>();
- for(int i=0;i<120;i++) {
- strlist.add("aa" + (i+1));
- }
- List<List<String>> list = split2List(strlist, 17);
- int index = 1;
- for(List<String> strlist2: list) {
- System.out.println(index++);
- System.out.println("----------------------------------");
- for(String str: strlist2) {
- System.out.print(str + "\t");
- }
- System.out.println("END");
- System.out.println();
- }
- }
- }