之前写过的代码,几个月后遇到类似的功能,感觉很熟悉,稍微费些劲也能做到,但是觉得有些不甘。明明之前整理好的为什么要重新做?百度参考其他人的思路感觉不是很顺心,个人原因吧。于是翻箱倒柜找出以前的代码,贴在这里留作笔记,或许也有其他同行有相似需求,聊做参考。

/**
* 数组切分
*
*/
public class PartitionList { /**
* 方式一
* 非均分,最后一组数量可能小于其它组数量
* @param list
* @param unitSize
* @return
*/
public static <T> List<List<T>> splitList_1(List<T> list, int unitSize) {
if (list == null || list.isEmpty() || unitSize < 1)
return null; int wholeSize = list.size();
int groupNum = wholeSize / unitSize;
List<List<T>> result = new ArrayList<List<T>>(); for (int i = 0; i < groupNum; i++) {
List<T> subList = list.subList(i * unitSize, (i + 1) * unitSize);
result.add(subList);
} if(unitSize * groupNum < wholeSize){
List<T> restList = list.subList(unitSize * groupNum, wholeSize);
result.add(restList);
} return result;
} /**
* 方式二
* 非均分,最后一组数量可能小于其它组数量
* @param list
* @param unitSize
* @return
*/
public static <T> List<List<T>> splitList_2(List<T> list, int unitSize) {
if (list == null || list.isEmpty() || unitSize < 1)
return null; int wholeSize = list.size();
List<List<T>> result = new ArrayList<List<T>>(); int start = 0;
int end = 0;
while(start < wholeSize){
end = start + unitSize;
if(end > wholeSize){
end = wholeSize;
}
List<T> subList = list.subList(start, end);
result.add(subList);
start = start + unitSize;
}
return result;
}
}

当然,这里面也是有参考其他大拿思路的地方,自己稍作了些改动。

百度过程中发现有人提到guava,appache ListUtil,java8新特性均可切分List,在这里Mark一下。

java中List按指定大小分割的更多相关文章

  1. JAVA将byte数组(byte[])按照指定大小分割成多个byte数组

    /** * 将byte数组按照指定大小分割成多个数组 * @param bytes 要分割的byte数组 * @param subSize 分割的块大小 单位:字节 * @return 指定大小的by ...

  2. Java中计算对象的大小

    一.计算对象大小的方法 Java中如何计算对象的大小呢,找到了4种方法: 1.java.lang.instrument.Instrumentation的getObjectSize方法: 2.BTrac ...

  3. Java中,数值比较大小,以及数值判断相等

    Java中,数值比较大小,以及数值判断相等

  4. Java中字符串相等与大小比较

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  5. Java中字符串相等与大小比較

    在C++中,两个字符串比較的代码能够为: (string1==string2) 但在java中,这个代码即使在两个字符串全然同样的情况下也会返回false Java中必须使用string1.equal ...

  6. java将list分为指定大小的新集合

    上代码: import java.util.ArrayList; import java.util.List; public class JayCommonUtil { /** * 按指定大小,分隔集 ...

  7. java中删除list指定元素遇到的问题

    java删除list中指定的元素可以用remove()函数,但会存在一个问题,举个例子来说 假如有a,b,c,d,e这个list,用remove()方法删除第一个元素之后,b,c,d,e会往前移动,此 ...

  8. 【java】初始化一个指定大小的list,在指定位置set存入元素,下标越界

    List使用过程中,出现这样的问题,出现异常:java.lang.IndexOutOfBoundsException: Index: 1, Size: 0 List<String> lis ...

  9. java中import机制(指定import和import *的区别)

    转自:https://www.cnblogs.com/dtts/p/4692480.html java中有两种包的导入机制,总结如下: 单类型导入(single-type-import),       ...

随机推荐

  1. 使用pyinstaller打包多个py文件为一个EXE文件

    1. 安装pyinstaller. pip install pyinstaller !!!!64位win7上打包后始终不能用,提示找不到ldap模块,换了32位win7就好了.!!!!(代码中涉及ld ...

  2. 一个springboot注解不成功的小问题

    报错: Consider defining a bean of type ''xxx" in your configuration. 最后发现是POM.xml里面 关于mybatis的包 & ...

  3. 2015-112 ado.net2

    CRUD:create read update delete 七. 数据绑定数据列的转换 在gridview中添加<OnRowDataBound="GridView1_RowDataB ...

  4. vbs中对excel的常用操作

    使用QTP自动化测试中,用到对excel的读写操作,这里把一些常用对excel操作的方法进行了归纳,总结.(对excel格式设置的常用操作这里没有进行总结.) Function DataToExcel ...

  5. 集合框架之map

    Map实现类用于保存具有映射关系的数据.Map保存的每项数据都是key-value对,也就是由key和value两个值组成.Map里的key是不可重复的,key用户标识集合里的每项数据. Map提供了 ...

  6. mysql:mysql is neither service nor target!?(suse12 sp2 )

    今天想在自己的虚拟机上安装mysql,安装好了并且初始化之后,一直无法启动mysql. 1.service mysql start; 报错:mysql is neither service nor t ...

  7. 小程序一个大盒子里面的盒子内容居中对其显示wxss写法

    对小程序研究感兴趣的可加(交流QQ群:604788754)入群联系群主可得到小程序教学资源. 这个案例只是想展示效果,内容部分未进行for循环绑定处理: WXML: <view class=&q ...

  8. springboot秒杀课程学习整理1-5

    1)交易模型设计 交易模型(用户下单的交易模型)OrderModel id(String 交易单号使用String), userId,itemId,amount(数量),orderAmount(总金额 ...

  9. 强大的金融类图表库 TradingView 使用分享

    这段时间刚好做币圈交易所,运用到了现在最火的金融类图表库 -- TradingView ,就是强大,基本上现在的火币网(https://www.huobi.com),币安网(https://www.b ...

  10. redis持久化数据的机制——转发

    转载:https://www.cnblogs.com/xingzc/p/5988080.html Redis提供的持久化机制(RDB和AOF)   Redis提供的持久化机制 Redis是一种面向“k ...