方法一:
代碼如下:
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); } }
實現效果: