java分段加载数据,循环和递归两种方式
2024-08-30 11:55:58
package org.jimmy.autosearch2019.test; import java.util.ArrayList; public class Test20190328 { private static final ArrayList<String> allList = new ArrayList<String>(); static {
for(int i = 0; i < 1000; i++) {
allList.add("test000000" + i);
}
} /**
* @author ラピスラズリ(Dawn)
* @date 2019年3月28日 下午2:16:57
* @detail
*/
public static void main(String[] args) {
System.out.println("循环方式每次获取10个对象:");
ArrayList<String> list = getAllList(0, 10);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("循环方式每次获取100个对象:");
list = getAllList(0, 100);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("循环方式每次获取1000个对象:");
list = getAllList(0, 100);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("递归方式每次获取10个对象:");
list = new ArrayList<String>();
list = getAllList(0, 10, list);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("递归方式每次获取100个对象:");
list = new ArrayList<String>();
list = getAllList(0, 100, list);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("递归方式每次获取1000个对象:");
list = new ArrayList<String>();
list = getAllList(0, 1000, list);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
} /**
* @author ラピスラズリ(Dawn)
* @date 2019年3月28日 上午11:07:50
* @detail 分段获取集合数据,pageIndex初始值为0,每次pageSize条,循环方式
*/
public static ArrayList<String> getAllList(int pageIndex, int pageSize) {
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> currentList = new ArrayList<String>();
while((currentList = getStrList(pageIndex, pageSize)).size() != 0){
list.addAll(currentList);
pageIndex++;
}
return list;
} /**
* @author ラピスラズリ(Dawn)
* @date 2019年3月28日 下午2:24:52
* @detail 递归方式
*/
public static ArrayList<String> getAllList(int pageIndex, int pageSize, ArrayList<String> list) {
ArrayList<String> currentList = getStrList(pageIndex, pageSize);
if(currentList != null && currentList.size() > 0) {
list.addAll(currentList);
pageIndex++;
return getAllList(pageIndex, pageSize, list);
}else {
return list;
}
} /**
* @author ラピスラズリ(Dawn)
* @date 2019年3月28日 下午2:13:09
* @detail pageIndex初始值为0
*/
public static ArrayList<String> getStrList(int pageIndex, int pageSize) {
ArrayList<String> resultList = new ArrayList<String>();
int beginIndex = pageIndex * pageSize;
int endIndex = (pageIndex + 1) * pageSize - 1;
if(endIndex > allList.size() - 1) {
endIndex = allList.size() - 1;
}
for(int i = beginIndex; i <= endIndex; i++) {
String currentStr = allList.get(i);
resultList.add(currentStr);
}
return resultList;
} }
好了,效果图就不给了.
最新文章
- RHEL5.8的NFS配置文件
- 控制非模态弹出框(showModelessDialog)唯一且随父页面关闭
- 遇到技嘉 Gigabyte UEFI DualBIOS问题
- parent,parents和closest
- Operator overloading
- 3527: [Zjoi2014]力 - BZOJ
- Extjs 实现输入数量,实时更改总价
- YASKAWA电机控制(1)---接线
- Golang在视频直播平台的高性能实践
- POJ 1417 True Liars
- curl -windows下接口通讯
- C#实现多级子目录Zip压缩解压实例
- ultragrid
- https 学习总结
- 雷林鹏分享:C# 异常处理
- Windows10怎么架设局域网DNS服务器?
- 二十三 Python分布式爬虫打造搜索引擎Scrapy精讲—craw母版l创建自动爬虫文件—以及 scrapy item loader机制
- 2017年--10年java大神告诉你开发最常用的百分之二十的技术有哪些?
- bzoj1934 Vote 善意的投票 最小割(最大匹配)
- 【题解】Bzoj2125最短路