Java批量处理数据
要求:共1000条数据,第一次批量插入100条,第二次批量插入101到200条,依次插入数据;
实现方式这里选择了两种常用的方式,都是使用List操作;
第一种实现思路如下:
<1> 原先存放数据的List为recordList,求出共需批量处理的次数;
<2> 新建一个List为list,循环后,将recordList的前maxValue条数据放到list里;
<3> 调用批量处理方法,调用recordList的removeAll方法将list中的数据从recordList中清除;
<4> 调用list.clear方法清除掉list本身的数据;
/**
* 批量插入 例如:共1000条数据,第一次批量插入100条,第二次批量插入101到200条,依次插入数据;
*
* @param recordList
* @param maxValue 批量处理的条数,如1000条
* @return
*/
private void batchAddRecords(List<String> recordList, int maxValue) {
List<String> list = new ArrayList<String>();
int size = recordList.size();
int total = size / maxValue;
if (size % maxValue != 0) {
total += 1;
} for (int i = 0; i < total; i++) {
if (i == total - 1) {
maxValue = size - (i * maxValue);
}
for (int j = 0; j < maxValue; j++) {
list.add(recordList.get(j));
}
// 批量处理的方法
print(list);
recordList.removeAll(list);
list.clear();
}
}
第二种实现思路类似:
通过调用recordList的subList方法,将截取后的内容保存到list中,然后调用批量处理方法,最后调用list的clear方法将list和recordList中的这部分数据清除;
需注意的是:List的subList方法有点特殊,它操作的是list和原先list所引用的同一块内存,所以需要注意些。
private void batchAddRecords2(List<String> recordList, int maxValue) {
List<String> list = new ArrayList<String>();
int size = recordList.size();
int total = size / maxValue;
if (size % maxValue != 0) {
total += 1;
}
for (int i = 0; i < total; i++) {
if (i == total - 1) {
maxValue = size - (i * maxValue);
}
list = recordList.subList(0, maxValue);
// 批量处理的方法
print(list);
list.clear();
}
}
Java批量处理数据的更多相关文章
- Java 批量插入数据(Oracle)
//批量添加20000条数据用时8秒. try { String url = "jdbc:oracle:thin:@IP:1521:orcl"; // orcl为数据库的SI ...
- java批量插入数据进数据库中
方式1: for循环,每一次进行一次插入数据. 方式2: jdbc的preparedStatement的batch操作 PreparedStatement.addBatch(); ...... Pre ...
- Java使用Mysql数据库实现批量添加数据
EmployeeDao.java //批处理添加数据 public int saveEmploeeBatch(){ int row = 0; try{ con = DBCon.getConn(); S ...
- java连接mysql批量写入数据
1.采用公认的MYSQL最快批量提交办法 public void index() throws UnsupportedEncodingException, Exception { //1000个一提交 ...
- Elasticsearch5.x批量插入数据(Java)
先上官方示例代码:官方示例 Java代码: // 批量插入数据 public void InsertBatch() { try { // 设置集群名称 Settings settings = Sett ...
- Java实现Excel数据批量导入数据库
Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...
- Java模拟数据量过大时批量处理数据的两种实现方法
方法一: 代码如下: import java.util.ArrayList; import java.util.List; /** * 模拟批量处理数据(一) * 当数据量过大过多导致超时等问题可以将 ...
- Java使用iBatis批量插入数据到Oracle数据库
Java使用iBatis批量插入数据到Oracle数据库 因为我们的数据跨库(mysql,oracle),单独取数据的话需要遍历好多遍,所以就想着先从mysql数据库中取出来的数据然后在oracle数 ...
- java使用POI实现Excel批量导入数据
1.准备工作 1.1 创建模板表头与数据库表字段一一对应,示例如下 1.2将模板放入项目中,如下图所示: 2.前端页面 2.1 使用超链接提供模板下载地址 <html lang="zh ...
随机推荐
- Duplicate headers received from server
This ones a little old but was high in the google ranking so I thought I would throw in the answer I ...
- [置顶] ios 水果连连看游戏源码
原创文章,转载请注明出处:http://blog.csdn.net/donny_zhang/article/details/9251917 demo功能:水果连连看游戏源码.iphone6.1 测试通 ...
- 真正菜鸟用教程之WQSG Scrip Export WQSG (脚本导出导入工具,PSP、NDS汉化必备 )
先扫盲WQSG是干什么用的 一些掌机类游戏汉化比方PSP NDS 汉化必备之物 它能够依据字典转换文本 假设你不知道这是啥玩意,快去充电染成茜色的坂道 文本提取(导出)方法 (下文称导出文章) 在导出 ...
- C# ashx生成的验证码
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "image/jpeg&qu ...
- VS快速定位文件、代码插件——DPack
之前用Myeclipse开发一个Java项目,发现其中“Open Resource”(Ctrl+Shirft+R)的功能比较好用,回到.Net后就找了找VS相应的功能,试了几个后觉得Dpack比较好用 ...
- CSS优先级总结(转载)
样式的优先级 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External styl ...
- chrome Provisional headers are shown错误提示
1.一般出现这个错误是请求没有发送成功 可能原因:在上传文件或ajax上传时指定的timeout,过时时间小 其他资料: http://www.duanzhihe.com/575.html http: ...
- CentOs上搭建git服务器
CentOs上搭建git服务器 首先安装setuptools wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0 ...
- MSSQL 简单练习回顾
这段时间,报了浦软培训的.NET,现在整理回顾下,算是个小小总结吧 为了便于操作,我没有在多个数据库间切换数据库实例,以一个总的数据库实例 test_demo为源进行的相关操作,代码的注释根据我的理解 ...
- shell中if做比较
比较两个字符串是否相等的办法是: if [ "$test"x = "test"x ]; then 这里的关键有几点: 1 使用单个等号 2 注意到等号两边各有一 ...