java List分批处理,例如对List中的数据进行批量插入。
方法一:
1 /**
2 * ClassName:Test List分批处理
3 * @author Joe
4 * @version
5 * @since JDK 1.8
6 */
7 public class Test {
8
9 public static void main(String[] args) throws InterruptedException {
10 // 计数器
11 int count = 1;
12
13 List<String> list = new ArrayList<String>();
14 // 填充List
15 for(int i = 0; i<10003; i ++){
16 list.add(i + "");
17 }
18 // 临时List
19 List<String> tempList = new ArrayList<String>();
20
21 for (String s : list) {
22 tempList.add(s);
23 // 分 1000条 执行 批量insert
24 if (count == 1000) {
25 // TODO 执行 insert 操作
26 System.out.println("insert-1-" + tempList);
27 // 重新计数
28 count = 1;
29 // 清空list,重新塞数据
30 tempList.clear();
31 } else {
32 count++;
33 }
34 }
35
36 // 扫尾
37 if (count > 0) {
38 // TODO 执行 insert 操作
39 System.out.println("insert-2-" + tempList);
40 // 重新计数
41 count = 1;
42 // 清空list,重新塞数据
43 tempList.clear();
44 }
45 }
46 }
方法二:
1 /**
2 * ClassName:Test2 List分批处理
4 * @version
5 * @since JDK 1.8
6 */
7 public class Test2 {
8
9 public static void main(String[] args) {
10 // 1.总记录数
11 List<String> oldList = new ArrayList<String>();
12 for (int i = 0; i < 10003; i++) {
13 oldList.add(i + "");
14 }
15
16 // 2.分页数据信息
17 int totalSize = oldList.size(); // 总记录数
18 int pageSize = 1000; // 每页N条
19 int totalPage = totalSize / pageSize; // 共N页
20
21 if (totalSize % pageSize != 0) {
22 totalPage += 1;
23 if (totalSize < pageSize) {
24 pageSize = oldList.size();
25 }
26 }
27 System.out.println("循环保存的次数:" + totalPage); // 循环多少次
28
29 // 临时List
30 List<String> temList = null;
31 for (int pageNum = 1; pageNum < totalPage + 1; pageNum++) {
32 int starNum = (pageNum - 1) * pageSize;
33 int endNum = pageNum * pageSize > totalSize ? (totalSize) : pageNum * pageSize;
34 System.out.println("起始:" + starNum + "-" + endNum);
35 temList = oldList.subList(starNum, endNum);
36 System.out.println("第" + pageNum + "批,执行insert:" + temList);
37 }
38 }
39 }