您的位置:首页 > 编程语言 > Java开发

Java 将List按照指定大小分段

2015-06-02 18:00 381 查看
有的时候,如果我们需要将现有的List按照指定的大小(size)分成段到新的newList中,newList中的每个元素都是一个原有的List,原有的List中包含size个元素,见如下代码:

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<T>> listArray = new ArrayList<List<T>>();
//创建list数组 ,用来保存分割后的list

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中的元素到分割后的list(subList)

}

if( (j + 1) == ((j + 1) * pageSize) ) {
//当放满一页时退出当前循环

break;

}

}

listArray.add(subList);
//将分割后的list放入对应的数组的位中

}

return listArray;

}

public static void main(String[] s) {

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();

}

}

}

===================================================

f( (j + 1) == ((j + 1) * pageSize) ) { //当放满一页时退出当前循环

break;

} 有错误

应该改成

if( (j + 1) == ((i + 1) * pageSize) ) { //当放满一页时退出当前循环

break;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: