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);
}
}
实现效果:

Java模拟数据量过大时批量处理数据的两种实现方法的更多相关文章
- 斯坦福大学公开课机器学习:machine learning system design | data for machine learning(数据量很大时,学习算法表现比较好的原理)
下图为四种不同算法应用在不同大小数据量时的表现,可以看出,随着数据量的增大,算法的表现趋于接近.即不管多么糟糕的算法,数据量非常大的时候,算法表现也可以很好. 数据量很大时,学习算法表现比较好的原理: ...
- storm正常任务数据量过大时造成定时任务不执行的问题
在执行storm的定时任务时,发现storm普通任务数据量过大时造成定时任务不执行, 同时设置了storm的普通任务和定时任务,定时任务设置5秒执行1次. 普通任务的数据时从spout中不停发射字符串 ...
- Mysql数据量较大时分页查询优化
据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是主键,vtype是int,vtype是索引. 最后co ...
- chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法[bubuko.com]
chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法,原文:http://bubuko.com/infodetail-328671.html 默认情况下如下图 Y轴并不是从0开始 ...
- 针对数据量较大的表,需要进行跨库复制,采用navcat 实现sqlite数据库跨数据库的数据表迁移 [转载]
2014年12月13日 14:36 新浪博客 (转自http://www.cnblogs.com/nmj1986/archive/2012/09/17/2688827.html) 需求: 有两个不同的 ...
- phpmyadmin 打开数据表较多,数据量较大的数据库时出现超时的解决办法
用phpmyadmin打开数据表较多,数据量较大的数据库时,会出现超时,或者等半天打开了说数据库没有表.并且即便打开了,再进行其他浏览,编辑,sql等操作,页面也是相当慢的,慢等几乎无法忍受.这里慢也 ...
- 解决mysql导入数据量很大导致失败及查找my.ini 位置(my.ini)在哪
数据库数据量很大的数据库导入到本地时,会等很久,然而等很久之后还是显示失败: 这是就要看看自己本地的没mysql是否设置了超时等待,如果报相关time_out这些,可以把mysql.ini尾部添加ma ...
- Mysql中使用JDBC流式查询避免数据量过大导致OOM
一.前言 java 中MySQL JDBC 封装了流式查询操作,通过设置几个参数,就可以避免一次返回数据过大导致 OOM. 二.如何使用 2.1 之前查询 public void selectData ...
- poi导出excel数据量过大
问题:使用poi导出excel,数据量过大导致内存溢出 解决思路:1.多sheet导出 2.生成多个excel打包下载 3.生成csv下载 本文使用的是第二个思路,代码如下: poiUtil工具类 p ...
随机推荐
- 【2018集训队互测】【XSY3372】取石子
题目来源:2018集训队互测 Round17 T2 题意: 题解: 显然我是不可能想出来的……但是觉得这题题解太神了就来搬(chao)一下……Orzpyz! 显然不会无解…… 为了方便计算石子个数,在 ...
- Project Euler 14 Longest Collatz sequence
题意:对于任意一个数 N ,寻找在 100,0000 之内按照规则( N 为奇数 N = N * 3 + 1 ,N 为偶数 N = N / 2 ,直到 N = 1 时的步数 )步数的最大值 思路:记忆 ...
- Linux下MATLAB安装及使用
安装过程 1.在在media目录下创建matlab文件夹,并挂载R2017b_glnxa64_dvd1.iso镜像文件 sudo mkdir /media/matlab sudo mount -t a ...
- hdu 3177贪心
#include<stdio.h>/*只能按这种形式排序单纯一种形式是不对的,按ai排序 20 2 1 1 10 20 按bi排序 20 2 5 17 1 16 都是不对的 二a.u+b. ...
- ie版本
<!--[if lte IE 6]> 自定义代码 <![endif]-->
- 使用动态代理实现dao接口
使用动态代理实现dao接口的实现类 MyBatis允许只声明一个dao接口,而无需写dao实现类的方式实现数据库操作.前提是必须保证Mapper文件中的<mapper>标签的namespa ...
- javascript操作window对象
document.defaultView或全局变量window--获取一个window对象. 1)获取窗体信息 innerHeight.innerWidth--获取窗体内容区域的高度.宽度. oute ...
- HDU 4354
思路是在看电视时突然想到的.枚举区间,然后按树形DP来选择最大值看是否满足条件.但枚举区间时的方法低效,看了题解,说枚举区间可以设两个指针逐步移动, 开始 l = r = 1, 记录已经出现的国家. ...
- muduo总结
总结说的有的过大,算是对自己学习的一个总结.兴许会不断补充. 模型总结 muduo是基于非堵塞的IO和事件驱动的网络库. muduo的总体结构时one loop per thread+threadpo ...
- HDU 5078 Revenge of LIS II(dp LIS)
Problem Description In computer science, the longest increasing subsequence problem is to find a sub ...