List集合数据太多进行分批,List的subList方法应用
List<String> mStrings=new ArrayList<>();
//初始化
for (int i = 0; i < 1020; i++) {
mStrings.add(String.valueOf(i));
} List<List<String>> newStrings = new ArrayList<>();
if (mStrings.size() > 100) {
if (mStrings.size() % 100 > 0) {
for (int i = 0; i < mStrings.size() / 100 + 1; i++) {
if (i == mStrings.size() / 100) {
List<String> newstr = new ArrayList<>();
newstr.addAll(mStrings.subList(100 * i, (mStrings.size() - 1)));
newStrings.add(newstr);
newstr.clear();
} else {
List<String> newstr = new ArrayList<>();
newstr.addAll(mStrings.subList(100 * i, 100 * (i + 1)));
newStrings.add(newstr);
newstr.clear();
}
}
} else {
for (int i = 0; i < mStrings.size() / 100 + 1; i++) {
List<String> newstr = new ArrayList<>();
newstr.addAll(mStrings.subList(100 * i, 100 * (i + 1)));
newStrings.add(newstr);
}
}
}
把 mStrings集合分为100个元素一组,主要使用了List的subList方法,但在使用过程中有一个坑,如果把代码中的newstr.addAll变为newstr=来为newstr赋值的话,虽不会对最后结果产生影响,但,一开始初始化数据的mStrings却被清空了,原因是newstr=(mStrings.subList(100 * i, (mStrings.size() - 1)));中的subList方法与=号使数据源指向的是同一个集合数据,清除后mStrings的数据也被清除。
有兴趣的可以把下面的java代码跑一下
test.java
import java.util.*;
public class test{
public static void main(String args[]){
List<String> mStrings=new ArrayList<>();
List<String> newStrings = new ArrayList<>();
init(mStrings);
newStrings=(mStrings.subList(0,mStrings.size()));
newStrings.clear();
System.out.println(mStrings.size()); } public static void init(List<String> mStrings){
for (int i = 0; i < 1020; i++) {
mStrings.add(String.valueOf(i));
} }
}
List集合数据太多进行分批,List的subList方法应用的更多相关文章
- ASP.NET MVC 表单提交多层子级实体集合数据到控制器中
于遇到了项目中实体类嵌套多层子级实体集合,并且子级实体集合的数据需要提交保存到数据库中的问题.针对此情况需要进行一些特殊的处理才可以将整个 实体类及子级实体集合数据提交表单到控制器中,解决的方法是根据 ...
- JAVA大集合数据分批次进行切割处理
今天遇到一个大集合里面的数据删除问题, 因为是一个大集合,如果同时传递到数据库,那么就会造成数据库压力 所以分批次的进行批量操作 其实 也可以采用多线程来处理或者多批次加多线程来处理都是可以的 下面的 ...
- WCF技术剖析之十四:泛型数据契约和集合数据契约(下篇)
原文:WCF技术剖析之十四:泛型数据契约和集合数据契约(下篇) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话)]]在.NE ...
- hdu 4940 数据太水...
http://acm.hdu.edu.cn/showproblem.php?pid=4940 给出一个有向强连通图,每条边有两个值分别是破坏该边的代价和把该边建成无向边的代价(建立无向边的前提是删除该 ...
- REDIS scan与sunionstore合并多集合数据
实际业务场景: 现需求要将多个KEY的set集合数据合并到一个总集合中,思路:通过scan分批扫描满足条件的KEY,然后用sunionstore分批合并. 注意闭坑:此种解决方案只适用于待合并的集合K ...
- 关于chart.js 设置canvas的宽度为父级元素的宽度的百分百 以及 X轴上面刻度数据太多如何处理
今天在做一个数据统计的界面的时候,需要做折线统计图,在网上找了一圈发现数据统计的插件还是不少的,本着轻量级的的原则选择了Chart.js,后来在做的过程中便遇到两个问题,以此记录下来,和刚刚接触前端的 ...
- mybatis插入List集合数据
处女帖 今天做完一个定时任务将一个表中的数据每天统计到另外一个表中,开始是用循环的方式向数据库添加,觉得数据库可能访问压力过大,所以就使用了mybatis的foreach标签来稍微的减少压力. 首先封 ...
- 关于springmvc接受简单参数和List集合数据的实现
首先要创建一个搭建一个springmvc的工程,至于如何搭建这里就不说了.给出比较重要的配置,项目目录结构如下,弄的比较简单,因为最近遇到一个需要传递List集合数据的问题,所以就当做实验. web. ...
- java-redis集合数据操作示例(三)
redis系列博文,redis连接管理类的代码请跳转查看<java-redis字符类数据操作示例(一)>. 一.集合类型缓存测试类 public class SetTest { /** * ...
随机推荐
- jQuery入门:认识jQuery
jQuery是一个轻量级的JavaScript库,拥有独特的选择器.出色的DOM操作.可靠的事件处理.完善的兼容性.链式操作以及方便的ajax等功能.jQuery的最新版本可在官方网站(http:// ...
- IONIC2新建项目并添加导航
一. 基础搭建 1. 新建IONIC2项目 ionic start myApp tabs --v2 不加--v2会新建ionic1的项目 2. 运行项目 cd myApp io ...
- Redis基础学习(三)—Key操作
一.key的相关操作 1.删除 del key1 key2 ... Keyn 作用: 删除1个或多个键. 返回值: 不存在的key忽略掉,返回真正删除的key的数量. 2.重命名 rename k ...
- 关于for()循环使用过程中遇到的问题(俄罗斯方块游戏中遇到的问题)
for循环的定义: for(参数1:参数2:参数3),参数1通常是初始化参数的,参数2是判断,参数3是对参数的操作.这三个参数都不是必须的. 这里想说的是,参数1的使用:比如下列语 int nLine ...
- python executemany的使用
使用executemany对数据进行批量插入的话,要注意一下事项: #coding:utf8 conn = MySQLdb.connect(host = "localhost", ...
- 用jQuery模拟淘宝购物车
首先我们要实现的内容的需求有如下几点: 1.在购物车页面中,当选中"全选"复选框时,所有商品前的复选框被选中,否则所有商品的复选框取消选中. 2.当所有商品前的复选框选中时,&qu ...
- let 和 const 关键字
看了阮老师的ES6入门再加上自己的一些理解整理出的学习笔记 let关键字 跟var相比,不会提升为全局变量,始终是块级作用域{} 注意点: 1: 不能在同一个块级作用域内声明同名变量 2: (如果当前 ...
- 前端必备PS技巧
hai,how is it going?I'm MuQing.I come back.哈哈,最近在英语的路上奋战,小秀一下.又好久没写博客了,实习的生活渐行渐远了,回到学校也终于能够坐下来对很多东西进 ...
- 用ElasticSearch搭建自己的搜索和分析引擎
作者:robben,腾讯高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 导语:互联网产品中的检索功能随处可见.当你的项目规模是百度大搜|商搜或者微信公众号搜索这种体量的时候 ...
- Unity3D 协程 浅谈
协程 理解:协程不是线程,也不是异步执行(知道就行). 1.协程和MonoBehaviour的Update函数一样,也是在MainThread中执行的(一定得明白这句话意思). void Start ...