有的时候,如果我们需要将现有的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();
}
}
}
以下是最新实现方式,效率有很大提升,已经测试通过,欢迎拍砖。
public static <T> List<List<T>> splitList(List<T> list, int pageSize) {
List<List<T>> listArray = new ArrayList<List<T>>();
List<T> subList = null;
for (int i = 0; i < list.size(); i++) {
if (i % pageSize == 0) {//每次到达页大小的边界就重新申请一个subList
subList = new ArrayList<T>();
listArray.add(subList);
}
subList.add(list.get(i));
}
return listArray;
}
相关推荐
主要介绍了java中对List分段操作的实例的相关资料,希望通过本文大家能够掌握list的分段实现方法,需要的朋友可以参考下
主要介绍了在Java 8中将List转换为Map对象方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
java获取list中两元素时间差
java 数组转list list转数组 list数组互转 java8 代码示例
关于Java中List对象的分页思想-按10个或者n个数对list进行分组
关于讲解在java 中List使用方法
JAVA SortList 通用排序类 从网上搜到一个java 对 List 排序的工具,自己改了下 支持 整数 和 浮点数 比较后排序,浮点数小数部分的有点问题,期待大牛帮忙优化。
利用jxl包结合java反射机制和注释,直接把list生成对应的Excel文件,即只需传入list、对应生成的对象、标题就可以生成excel文件write(String title, List list,Class c),实现一个简单生成excel工具类
根据需要将xml格式的代码解析成LIST数组,可以解2层和3层的 根据需要传送不同节点数据就可以了。
java后台从数据库读取 数据,封装到list集合,控制层转化为XML格式数据
java List排序工具类 使用示例: new OrderUtils().order(list, "name", OrderUtils.DESC); 相关实例代码: public static void main(String[] args) { List<Person> list = getData(); // 获取无序数据 new ...
Java 实现泛型List的源码,基本实现了List接口的全部所有方法。欢迎大家发表自己的观点和建议。
今天小编就为大家分享一篇python 实现list或string按指定分段,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
此java类实现了对数据表的分类递归树的实现,为本人倾力之作,后期,会发布js版,敬请期待!
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并 Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
Java递归将List转为树形结构 博客地址:https://blog.csdn.net/weixin_38500202/article/details/110456363
java freemark list嵌套导出word
java list根据对象的某个属性的值去重,java list根据对象的某个属性的值去重java list根据对象的某个属性的值去重
javalist数据结构_Java数据结构-------List 三种List:ArrayList,Vector,LinkedList 类继承关系图 ArrayList和Vector通过数组实现,⼏乎使⽤了相同的算法;区别是ArrayList不是线程安全的,Vector绝⼤多数⽅法做了...
java实现后台用list接收前台重复的name属性的值 接收重复属性 后台数组接收前台重复的name