Java模拟数据量过大时批量处理数据的两种实现方法
方法一:
代码如下:
import java.util.ArrayList; import java.util.List; /** * 模拟批量处理数据(一) * 当数据量过大过多导致超时等问题可以将数据进行分批处理 * @author 【】 * */ public class BatchUtil2 { public static void listBatchUtil(List<Integer> lists) { System.out.println(lists); System.out.println(lists.size()); int temp = 1; for (int i = 0; i < lists.size(); i += 10) { System.out.println("======================进行第" + temp + "次批处理======================="); if (lists.size() - i > 10) { System.out.println(lists.subList(i, i + 10).toString()); } else { if (lists.size() > i) { System.out.println(lists.subList(i, lists.size()).toString()); } } temp += 1; } } public static void main(String[] args) { List<Integer> lists = new ArrayList<>(); for (int i = 1; i <= 26; i++) { lists.add(i); } listBatchUtil(lists); } }
实现效果:
方法二:
代码如下:
import java.util.ArrayList; import java.util.List; /** * 模拟批量处理数据(二) * 当数据量过大过多导致超时等问题可以将数据进行分批处理 * @author 【】 * */ public class BatchUtil { public static void listBatchUtil(List<Integer> lists) { System.out.println(lists); // 定义批处理的数据数量(即批处理条件) int num = 10; // 判断集合数量,如果小于等于定义的数量(即未达到批处理条件),直接进行处理 if (lists.size() <= num) { System.out.println(lists.size()); System.out.println(lists.toString().substring(1, lists.toString().lastIndexOf("]"))); return; } // 如果大于定义的数量,按定义数量进行批处理 int times = lists.size()/num + 1; System.out.println("一共要进行"+times+"次批处理"); // 遍历分批处理次数,并进行批处理 for (int i = 0; i < times; i++) { // 定义要进行批处理的临时集合 List<Integer> tempList = new ArrayList<>(); // 将要批处理数据放入临时集合中 for (int j = i*num; j < lists.size(); j++) { tempList.add(lists.get(j)); if (tempList.size() == num) { break; } } // 进行批处理 System.out.println("======================进行第"+(i+1)+"次批处理======================="); System.out.println(tempList.size()); System.out.println(tempList.toString().substring(1, tempList.toString().lastIndexOf("]"))); System.out.println("========================================================="); } } public static void main(String[] args) { List<Integer> lists = new ArrayList<>(); for (int i = 1; i <= 26; i++) { lists.add(i); } listBatchUtil(lists); } }
实现效果: