今天遇到一个大集合里面的数据删除问题,
因为是一个大集合,如果同时传递到数据库,那么就会造成数据库压力
所以分批次的进行批量操作
其实 也可以采用多线程来处理或者多批次加多线程来处理都是可以的
下面的案例 主要讲述是大集合拆分成小集合的代码
避免下次用到忘记了!
啥也不说,直接上代码,避免下次会用到,先记着
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
for (int i = 0; i <=100000; i++) {
list.add(""+i);
}
int size=list.size();
int num = (size) % 30 == 0 ? (size / 30) : (size / 30 + 1);// 按每30条记录查询
int start=0;
int end =0;
List<String> a = new ArrayList<String>();
//方法1
for (int i = 1; i <= num; i++)
{
end=(i*30)> size ? size:(i*30);
start=(i-1)*30;
for(;start < end; start++){
a.add(list.get(start));
}
System.out.println("输出数据---"+a.toString());
//此处可以进行处理数据 插入 修改删除 都可以进行操作 避免同时操作大集合数据
a.clear();
}
//方法2
end=0;
start=0;
for (int i = 1; i <= num; i++)
{
end=(i*30)> size ? size :(i*30);
start=(i-1)*30;
System.out.println(end+"--"+start);
a=list.subList(start,end);
System.out.println("输出数据-bbb--"+a.toString());
}
}