直接上代码:
1、使用List的subList,封装方法
第一个方法是针对Integer的List
第二个方法是适合所有对象的,经测试第二个方法给第一个方法快很多,好像不用时间一样。
/*****
*
* @param dataList
* @return 如果输入的数据列表为空,则返回一个空的数组。如果传分割的大小小于或者等于0,则会将传的数组放在数组第一个元素返回
*/
public static List<List<Integer>> myListPartition(List<Integer> dataList,int splitSize){
if(dataList == null || dataList.isEmpty()) {
return new ArrayList<>();
}
List<List<Integer>> resList = new ArrayList<>();
if(splitSize <= 0) {
resList.add(dataList);
return resList;
}
int dataSize = dataList.size();
for(int i=0;i<dataSize;i += splitSize) {
int end = Math.min(i + splitSize, dataSize);
resList.add(dataList.subList(i, end));
}
return resList;
}
/***
*
* @param dataList
* @param splitSize
* @return 跟上面的方法一样,这里写一个通用类型的
*/
public static <T> List<List<T>> myListPartitionFormat(List<T> dataList,int splitSize){
if(dataList == null || dataList.isEmpty()) {
return new ArrayList<>();
}
List<List<T>> resList = new ArrayList<>();
if(splitSize <= 0) {
resList.add(dataList);
return resList;
}
int dataSize = dataList.size();
for(int i=0;i<dataSize;i += splitSize) {
int end = Math.min(i + splitSize, dataSize);
resList.add(dataList.subList(i, end));
}
return resList;
}
二、google工具类型Lists的partition
先导入架包
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
使用:
import com.google.common.collect.Lists;
List<List<Integer>> resList1 = Lists.partition(testList, 33);
测试结果:
1万条数据:
//Integer
Time : 2.0
Size : 3031
//google
Time : 39.0
Size : 3031
//T
Time : 1.0
Size : 3031