12

java list拆分批次处理

2017-08-20 08:52:00    1147533288    1942    转贴

<!--

public static void main(String[] args) {

List<Integer> dataList = new ArrayList<Integer>();
for(int i=0;i<12888;i++)
dataList.add(i);

//分批处理
if(null!=dataList&&dataList.size()>0){
int pointsDataLimit = 1000;//限制条数
Integer size = dataList.size();
//判断是否有必要分批
if(pointsDataLimit<size){
int part = size/pointsDataLimit;//分批数
System.out.println("共有 : "+size+"条,!"+" 分为 :"+part+"批");
//
for (int i = 0; i < part; i++) {
//1000条
List<Integer> listPage = dataList.subList(0, pointsDataLimit);
System.out.println(listPage);
//剔除
dataList.subList(0, pointsDataLimit).clear();
}

if(!dataList.isEmpty()){
System.out.println(dataList);//表示最后剩下的数据
}
}else{
System.out.println(dataList);
}
}else{
System.out.println("没有数据!!!");
}

}


-->


<!--

第二种写法

int batchCount = 20000;// 每批commit的个数
int batchLastIndex = batchCount;// 每批最后一个的下标

for (int index = 0; index < rows.size();) {
if (batchLastIndex >= rows.size()) {
batchLastIndex = rows.size();
insCwByBatch(rows.subList(index, batchLastIndex),ruleInfo,taskInfo,jdbcTemplate);
break;// 数据插入完毕,退出循环
} else {
insCwByBatch(rows.subList(index, batchLastIndex),ruleInfo,taskInfo,jdbcTemplate);
index = batchLastIndex;// 设置下一批下标
batchLastIndex = index + (batchCount - 1);
}
}