分割List集合
来源:互联网 发布:移动端网页聊天室源码 编辑:程序博客网 时间:2024/05/22 19:14
工作中需要批量插入数据库,但是可能数据量太大,一次性插入会出现问题,故将原有的List集合按照一定的尺寸进行分割,然后将分割后的单个小集合做批量插入。分割的实现如下:
import java.util.ArrayList;import java.util.List;public class ListUtil { /** * * @description 分割集合 * @param * oldList:要分割的目标集合 * batchSize:用户传入的每个批次的元素个数 * @return List> 分割后的集合集 * @date 2017年7月13日 */ public static
List > splitList(List
oldList, int batchSize) { if(batchSize < 1) { return null; } List > result = new ArrayList
>(); int size = oldList.size(); int count = (size + batchSize - 1) / batchSize; for (int i = 0; i < count; i++) { List
subList = oldList.subList(i * batchSize, ((i + 1) * batchSize > size ? size : (i + 1) * batchSize)); result.add(subList); } return result; }}
import junit.framework.Assert;import org.junit.Before;import org.junit.Test;import java.util.ArrayList;import java.util.List;import java.util.Random;/** * Created by dell on 2017-07-13. */public class ListUtilTest { Listlist; /* 得到一个伪随机字符串 */ public static String getRandomString(int length) { String base = "abcdefghijklmnopqrstuvwxyz0123456789"; Random random = new Random(); StringBuffer sbr = new StringBuffer(); for (int i = 0; i < length; i++) { int number = random.nextInt(base.length()); sbr.append(base.charAt(number)); } return sbr.toString(); } @Before public void initList() { list = new ArrayList<>(); UserInfo ui; for(int i = 1; i < 29; i++) { ui = new UserInfo(); ui.setLoginName(i + getRandomString(5)); ui.setPassword(getRandomString(8)); list.add(ui); } } @Test public void testSplitList() { List > lists = ListUtil.splitList(list, 10); Assert.assertEquals(3, lists.size()); Assert.assertTrue(lists.get(0).size() == lists.get(1).size()); Assert.assertEquals(8, lists.get(2).size()); Assert.assertEquals(28, lists.get(0).size() + lists.get(1).size() + lists.get(2).size()); }}
阅读全文
1 0
- 分割List集合
- 集合分割
- 分割List
- List 分割
- 由前端获取的字符串,多种情况,分割成数组保存到集合List中
- 集合的所有分割
- python list 换行分割
- java分割list数据
- 循环分割list
- list 集合
- List集合
- List集合
- List集合
- List集合
- List集合
- list 集合
- List集合
- 集合 --- List
- xcode模拟器默认弹出默认键盘
- android应用与Linux内核驱动数据交互
- wampserver修改默认端口80问题
- Q122:PBRT-V3,提高Monte Carlo积分计算效率的方法——Russian Roulette和Splitting(13.7章节)
- opecncv之运动物体检测
- 分割List集合
- 多个servlet间跳转技术的细节
- Hbase 查询过程详解(基于hbase0.98版本后分析的)
- 多个脚本调用同一个函数的方法
- Sublime text!行首,行尾,批量编辑!
- android之APP模块编译
- CodeForces697C【LCA】
- Oracle Probider for OLE DB找不到,怎么破?
- 2460: [BeiJing2011]元素 有关线性基的理解