• 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);
    	}
    }
    

       实现效果:

  • 相关阅读:
    Linux系统下/tmp目录文件重启后自动删除,不重启自动删除10天前的/TMP的文件(转)
    Docker 镜像加速器
    RabbitMQ集群和高可用配置
    k8s如何管理Pod(rc、rs、deployment)
    微信开放平台开发(1) 语义理解
    微信开放平台开发(2) 微信登录
    微信电话
    微信支付开发(1) 微信支付URL配置
    微信支付开发(2) 微信支付账号体系
    微信支付开发(3) JS API支付
  • 原文地址:https://www.cnblogs.com/Big-Boss/p/9543667.html
Copyright © 2020-2023  润新知